0
点赞
收藏
分享

微信扫一扫

Mysql配置调优及SQL优化

西红柿上校 2022-04-06 阅读 107
mysqlsqllua

Mysql关键配置

  1. innodb_buffer_pool_size
    缓冲池是数据和索引缓存的地方
    这个值越大越好,这能保证你在大多数的读取操作时使用的是内存而不是硬盘
    对性能影响非常大,一般可以设置内存的50~80%
  2. innodb_log_file_size
    这是redo日志的大小
    redo日志被用于确保写操作快速而可靠并且在崩溃时恢复
    MySQL 5.5和5.6及以上版本可以调整,根据业务设置成500M到几G
    应用程序需要频繁的写入数据,可以设置大点
  3. innodb_file_per_table
    是否采用独立表空间
    默认关闭,建议都设置成独立表空间
    如果不设置,磁盘空间满了,删除表空间也无法释放,必须做数据迁移
  4. log-bin
    是否开启binlog
    默认关闭,生产项目建议开启
    回滚和数据恢复
    审计
  5. max_connections
    应用程序没有正确的关闭数据库连接,Too many connections错误
    默认是100,建议设置成1000
    应用程序里使用连接池或者在MySQL里使用进程池
  6. lower_case_table_names
    是否区分大小写
    默认区分,生产使用根据业务需求调整
  7. character_set_server
    字符集
    迁移、数据库变更、数据导入等都是必须要注意的,不然数据乱码了就会很麻烦

    压力测试

    1.Sysbench
    sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试
    内置很多lua脚本:
    oltp_read_write.lua
    oltp_read_only.lua
    oltp_write_only.lua
    oltp_insert.lua
    oltp_delete.lua
    oltp_commit.lua

    压测结论

  8. innodb_buffer_pool_size配置为4G,innodb_log_file_size配置为1G,在300线程数的情况下,mysql的QPS可以达到20000,mysql的TPS可以达到1000。(生产可以选择此配置,所需资源较少)
  9. innodb_buffer_pool_size配置为6G,innodb_log_file_size配置为1G,在1000线程数的情况下,mysql的QPS可以达到25000,mysql的TPS可以达到1267。(在服务器为8核CPU、16G内存、7200转磁盘的配置下,为最优的mysql配置)
  10. 在继续增加mysql内存和线程数的情况下,性能提升不是很大,CPU成为提升性能的瓶颈。

常用的查询

— 查看当前连接数
show STATUS like ‘Threads%’;
— 查看最大连接数
show variables like ‘%max_connections%’;
— 查看缓存池大小
show variables like ‘%innodb_buffer_pool_size%’;
— 查看最大被使用的数量
show global status like ‘Max_used_connections’;
— 查看日志缓存大小
show variables like ‘%innodb_log_buffer_size%’;
— 查看日志文件大小
show variables like ‘%innodb_log_file_size%’;

举报

相关推荐

0 条评论