Mysql性能优化实战

2019年5月15日11:33:35 发表评论 2,365 views
广告也精彩

Mysql我们部署使用的非常广泛,我们希望他能够近乎完美的支撑业务,所以我们需要让它符合我们业务的现状,所以我们需要对其就行调整。

QPS 与 TPS IOPS 的关系

`QPS` 指的是 每秒查询数,是一台服务器每秒能够响应的查询次数
`TPS` 指的是 每秒处理的事务数,事务 就是 客户端 与 服务端建立链接的过程,(发送请求,响应,反馈结果),1个TPS 后可以有多个QPS产生
`IOPS` 是指存储每秒可接受多少次主机发出的访问

一、根据实际情况 调整Mysql如下几个参数

活动/峰值连接数    1/50    若值过大,增加max_connections
线程缓存命中率 99.90%  若过低,增加thread_cache_size
索引命中率   50.00%  若过低,增加key_buffer_size
Innodb索引命中率 100.00% 若过低,增加innodb_buffer_pool_size
查询缓存命中率 OFF 若过低,增加query_cache_size
创建临时表到磁盘    72.49%  若过大,尝试增加tmp_table_size
已打开的表   128 若过大,增加table_cache_size
没有使用索引的量    15  若不为0,请检查数据表的索引是否合理
没有索引的JOIN量  0   若不为0,请检查数据表的索引是否合理
排序后的合并次数    6   若值过大,增加sort_buffer_size
锁表次数    0   若值过大,请考虑增加您的数据库性能

以上数据可以通过mysql 命令进行查询

二、服务器 8-16G 内存配置案例如下:

key_buffer_size  512MB, 用于索引的缓冲区大小

query_cache_size 0 MB, 查询缓存,不开启请设为 0

tmp_table_size  1024MB, 临时表缓存大小

innodb_buffer_pool_size 1024MB, Innodb缓冲区大小

innodb_log_buffer_size 16MB, Innodb日志缓冲区大小

sort_buffer_size 2048KB * 连接数, 每个线程排序的缓冲大小

read_buffer_size 2048KB * 连接数, 读入缓冲区大小

read_rnd_buffer_size 1024KB * 连接数, 随机读取缓冲区大小

join_buffer_size 4096KB * 连接数, 关联表缓存大小

thread_stack 384 KB * 连接数, 每个线程的堆栈大小

binlog_cache_size 192 KB * 连接数, 二进制日志缓存大小(4096的倍数)

thread_cache_size 192 线程池大小

table_open_cache 1024 表缓存(最大不要超过2048)

max_connections 1024 最大连接数

以上只针对自建mysql,公有云 数据库 性能较好,可能设置会更大。

  • QQ精品交流群
  • weinxin
  • 微信公众号
  • weinxin
广告也精彩
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: