Mysql配置优化

[mysqld]
socket = /tmp/mysql.sock
#Linux环境下特有,用户在Linux客户端链接可以不通过TCP/IP网络而直接使用socket链接mysql

skip-external-locking
#避免Mysql的外部锁定,减少出错率,增强稳定性。

skip-name-resolve
#禁止mysql堆外部链接进行DNS解析,消除mysql进行DNS解析的时间,开启后所有远程主机只能通过IP连接

back_log = 384
#Mysql暂停响应新请求之前,短时间内的多个请求可以被存在堆栈中。如果系统在短时间内有很多连接,则需要增大该参数值指定到来的TCP连接的侦听队列的大小。(默认值为50,推荐设置小于512的整数)

key_buffer_size = 384M
#指定用于索引的缓冲区大小,增加它可以更好的索引处理性能(4G左右服务器,建议设置256M-384M)

max_allowed_packet = 4M
#在网络传输中一次消息传输大量的最大值。系统默认为1M,最大为1G,必须设置1024的倍数

thread_stack = 256k
#设置mysql每个线程的堆栈大小,默认值(192K)足够大。可设置范围128K到4GB,

tabke_cache = 614K
#指表高速缓存的大小。当Mysql访问一个表时,如果在mysql表缓存区还有空间,那么这个表就被打开并放入表缓冲区,能更快地访问表中的内容。可以通过Open_tables喝Opened_tables,判断是否需要增加table_cache的值,如果open_tables接近table_cache的时候,并且Opened_tables这个值在逐步增加,那就要考虑增加这个值的大小。

sort_buffer_size = 6M
#查询排序时能使用的缓冲区大小(默认2M)

read_buffer_size = 4M
#读查询所能使用的缓冲区大小

join_buffer_size = 8M
#联合查询能使用的缓冲区大小

myisam_sort_buffer_size = 64M
#用于设置在REPAIR TABLE或用CREATE INDEX创建索引或ALTER TABLE的过程中排序索引所分配的缓冲区大小(范围为4M至4GB,默认8M)

thread_cache_size = 64M
#用于设置Thread Cache池中可以缓冲的连接线程最大数量,范围0-16384默认为0。这个值表示可以重新利用包吃在缓冲中的线程数量,当断开连接时,如果缓冲中还有空间,那么客户端的线程将被放到缓存中;如果线程重新被请求,那么请求将从缓冲中读取,如果缓冲中是空的或则是新的请求,那么这个线程将重新创建,如果有很多新的线程,增加这个值可以改善系统性能。(1G=8 2G=16 3G=32 4G=64或 更大)

query_cache_size = 64M
#指定Mysql查询缓冲区的大小。可以通过Mysql控制台观察,如果Qcache_lowmem_prunes的值非常大,表明经常出现缓冲不够的清空;如果Qcache_hits的值非常大,则表明查询缓冲使用非常频繁。如果该值较小反而会影响效率,那么可以考虑不用查询缓冲;如果Qcache_free_blocks非常大,表明缓冲区碎片很多;

tmp_table_size = 256M
#用于设置内存临时表的最大值。如果超过该值,则会将临时表写入硬盘,范围1K到4GB。

max_connections = 768
#指定Mysql允许的最大连接进程数。如果经常出现“Too Many Connections"的错误,则要增大

max_connect_errors = 1000
#用于设置每台主机的连接请求异常终端的最大次数,当超过该次数,Mysql禁止host的连接请求。直到Mysql重启或通过flush hosts命令清空此host的相关信息。默认为10

wait_timeout = 10
#用于指定一个请求的最大连接时间,对于4GB左右内存的服务器来说,可以设置5-10

thread_concurrency = 8
#取值为服务器裸机CPU的数量的两倍

skip-networking
#开启选项可以彻底关闭Mysql的TCP/IP连接方式,如果web服务器是以远程连接访问mysql则不需要开启,否则无法正常连接

table_cache = 1024
#物理内存越大,设置越大,512-1024最佳。

innodb_additional_mem_pool_size = 4M
#默认为2M

innodb_flush_log_at_trx_commit = 1
#设置为0就是等到innodb_log_buffer_size列队满后在统一存储,默认为1

innodb_log_buffer_size = 2M
#默认为1M

innodb_thread_concurrency = 8
#服务器CPU有几个就设置几个

tmp_table_size = 64M
#设置内存临时表最大值。如果超过该值,则会将临时表写入磁盘。范围1KB-4GB

read_rnd_buffer_size = 16M
#设置进行随机读写的时候所有使用的缓冲区。与read_buffer_size所设置相反,一个是顺序读的时候使用,一个是随机读的时候使用


#如果key_reads太大,则应该把key_buffer_size变大,保持key_reads/key_read_requests至少在1/100以上,越小越好;如果qcache_lowmem_prunes很大,就要增加query_cachesize的值

推荐阅读更多精彩内容