80.jpg?x-oss-process=image/auto-orient,1/quality,q_90/watermark,image_bG9nby5wbmc_eC1vc3MtcHJvY2Vzcz1pbWFnZS9yZXNpemUsUF8yMA,g_center,t_50,x_10,y_10

数据库调优包含两个大方向,一个是MySQL参数优化,另一个是SQL语句的优化,后者常交给开发工程师处理。而MySQL需要经过大量尝试才能得出最优参数,今天给大家讲解一下参数的作用及相关推荐值!

参数作用

首先说一下各参数作用:

参数名称 参数作用
key_buffer_size 单位为MB,用于索引的缓冲区大小
query_cache_size 单位为MB,查询缓存,不开启请设为0
tmp_table_size 单位为MB,临时表缓存的大小
innodb_buffer_pool_size 单位为MB,InnoDB缓冲区大小
innodb_log_buffer_size 单位为MB,InnoDB日志缓冲区大小
sort_buffer_size KB乘以连接数,每个线程排序的缓冲的大小
read_buffer_size KB乘以连接数,读入缓冲区的大小
read_rnd_buffer_size KB乘以连接数,随机读取缓冲区的大小
join_buffer_size KB乘以连接数,关联表缓存的大小
thread_stack KB乘以连接数,每个线程的堆栈的大小
binlog_cache_size KB乘以连接数,二进制日志缓存的大小(4096的倍数)
thread_cache_size 线程池的大小
table_open_cache 表的缓存(最大别超过2048)
max_connections 最大的连接数

推荐阈值

然后说一下不同内存的推荐阈值:

优化方案 1-2GB 2-4GB 4-8GB 8-16GB 16-32GB
key_buffer_size 128 268 384 512 1024
query_cache_size 0 0 0 0 0
tmp_table_size 64 384 512 1024 2048
innodb_buffer_pool_size 256 384 512 1024 4096
innodb_log_buffer_size 8 8 8 8 8
sort_buffer_size 768 768 1024 2048 4096
read_buffer_size 768 768 1024 2048 4096
read_rnd_buffer_size 512 512 768 1024 2048
join_buffer_size 1024 2048 2048 4096 8192
thread_stack 256 256 256 384 512
binlog_cache_size 64 64 128 192 256
thread_cache_size 64 96 128 192 256
table_open_cache 128 192 384 1024 2048
max_connections 100 200 300 400 500

特别声明

不同的程序对数据库的需求不同,以上数值仅供参考,具体阈值还要根据实例运行情况进行修改。

以上数值皆为云主机进行的尝试,如果是实体服务器,则阈值差异会更大!

补充说明

query_cache_size为查询缓存,我习惯不启用,毕竟WordPress的查询语句实在惨不忍睹,这个对WordPress用户来说几乎无用。

如果想开启也可以,这个没有范围,只要内存够用开多大都可行!


 评论