mysql 那些事-配置优化
根据系统和数据合理配置mysql参数,如:缓存大小、排序空间大小等
max_connections 最大连接数
back_log 暂存的连接数
wait_timeout:指的是MySQL再关闭一个非交互的连接之前所需要等待的秒数。
interative_timeout:指的是关闭一个交互的连接之前所需要等待的秒数。
key_buffer_size 索引缓冲区的大小
query_cache_size(查询缓存简称QC)
show status like 'Qcache%' 可以知道query_cache_size的设置是否合理
Qcache_free_blocks:内存块的个数
Qcache_free_memory:Query Cache 中目前剩余的内存大小
Qcache_hits:表示有多少次命中缓存
Qcache_inserts:表示多少次未命中而插入
Qcache_lowmen_prunes:多少条Query因为内存不足而被清除出Query Cache
Qcache_queries_in_cache:当前Query Cache 中cache的Query数量
Qcache_total_blocks:当前Query Cache中block的数量
query_cache_limit:超出此大小的查询将不被缓存
query_cache_min_res_unit:缓存块的最小大小
query_cache_type:缓存类型
max_connect_errors:阻止过多尝试失败的客户端以防止暴力破解密码
sort_buffer_size:每个需要排序的线程分配该大小的一个缓冲区
max_allowed_packet server接受的数据包大小
join_buffer_size 用于表示关联缓存的大小
thread_cache_size 服务器线程缓存,这个值表示可以重新利用保存在缓存中的线程数量
Innodb的几个变量
innodb_buffer_pool_size
innodb_flush_log_at_trx_commit 取值分别为0,1,2.
实际测试发现,该值对插入数据的速度影响非常大,设置为2时插入10000条记录只需要两秒,设置为0时只需要一秒,设置为1时,则需要229秒
innodb_thread_concurrency=0
此参数用来设置innodb线程的并发数,默认值为0表示不被限制,若要设置则与服务器的CPU核心数相同或是CPU的核心数的2倍
nnodb_log_buffer_size
此参数确定日志文件所用的内存大小,以M为单位。缓冲区更大能提高性能,对于较大的事务,可以增大缓存大小
innodb_log_file_size=50M
此参数确定数据日志文件的大小,以M为单位,更大的设置可以提高性能
innodb_log_files_in_group=3
为提高性能,MySQL可以以循环方式将日志文件写到多个文件。推荐设置为3
read_buffer_size=1M
MySQL 读入缓冲区大小。对表进行顺序扫描的请求将分配到一个读入缓冲区MySQL会为他分配一段内存缓冲区
read_rnd_buffer_size=16M
MySQL 的随机读(查询操作)缓冲区大小
bulk_insert_buffer_size=64M
批量插入数据缓存大小,可以有效的提高插入效率,默认为8M
binary log
binlog_cache_size=2M //为每个session分配的内存,在事务过程中用来存储二进制日志的缓存,提高记录bin-log的效率。
max_binlog_cache_size=8M //表示的是binlog能够使用的最大cache内存大小
max_binlog_size=512M //指定binlog日志文件的大小。不能将变量设置为大于1G或小于4096字节。默认值为1G.在导入大容量的sql文件时,建议关闭,sql_log_bin,否则硬盘扛不住,而且建议定期做删除。
expire_logs_days=7