数据库调优包含两个大方向,一个是 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 用户来说几乎无用。
如果想开启也可以,这个没有范围,只要内存够用开多大都可行!
条评论