Mysql5.7参数调优记录

innodb_buffer_pool_size

这个参数是Mysql数据库最重要的参数之一,表示InnoDB类型的 表
和索引的最大缓存 。它不仅仅缓存 索引数据 ,还会缓存 表的数据 。这个值越大,查询的速度就会越
快。但是这个值太大会影响操作系统的性能。

show global variables like 'innodb_buffer_pool_size';
# 本机结果值:134217728 (128M) 默认值,128M

show global status like 'Innodb_buffer_pool_pages_data';
# 本机结果值:8184  
# The number of pages in the InnoDB buffer pool containing data. The number includes both dirty and clean pages.

show global status like 'Innodb_buffer_pool_pages_total';
# 本机结果值:8192
# The total size of the InnoDB buffer pool, in pages.


show global status like 'Innodb_page_size';
# 本机结果值:16384
# InnoDB page size (default 16KB). Many values are counted in pages; the page size enables them to be easily converted to bytes

调优参考计算方法:
val = Innodb_buffer_pool_pages_data / Innodb_buffer_pool_pages_total * 100%
val > 95% 则考虑增大 innodb_buffer_pool_size, 建议使用物理内存的75%
val < 95% 则考虑减小 innodb_buffer_pool_size, 建议设置为:Innodb_buffer_pool_pages_data * Innodb_page_size * 1.05 / (1024 * 1024 * 1024)

# 本机 设置为 2G
set global innodb_buffer_pool_size = 2147483648; 

MySQL5.7及以后版本,改参数时动态的,修改后,无需重启MySQL,但是低版本,静态的,修改后,需要重启MySQL。

query_cache查询缓存相关参数

参考该文章

key_buffer_size

表示索引缓冲区的大小 。索引缓冲区是所有的线程共享 。增加索引缓冲区可以得到更好处理的索引(对所有读和多重写)。当然,这个值不是越大越好,它的大小取决于内存的大小。如果这个值太大,就会导致操作系统频繁换页,也会降低系统性能。对于内存在 4GB 左右的服务器该参数可设置为 256M 或 384M。

key_buffer_size是对MyISAM表性能影响最大的一个参数

key_buffer_size表示索引缓冲区的大小,严格说是它决定了数据库索引处理的速度,尤其是索引读的速度。

可以检查状态值Key_read_requests和Key_reads,即可知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好,如果这个数值过大,就应该调高key_buffer_size的数值

show variables like '%key_buffer_size%';
# 本机结果值:8388608
show global status like '%key_read%';
# 本机结果值:0.003388 大于1:1000
# 设置key_buffer_size 为256M
set global key_buffer_size = 268435456

table_open_cache

参考该文章

你可能感兴趣的:(数据库,服务器,缓存)