[转]MySQL性能优化的参数简介

本文转自:http://hi.baidu.com/yuhongchun027/blog/item/40142207cfa6c3c57b8947c1.html

 

局网站访问量越来越好,MySQL自然变成瓶颈,由此如今本人直接在研商MySQL 的优化,第一步自然想到的凡
MySQL
系统参数的优化,作为一个访问量很挺之网站(日20万人次以上)的数据库系统,无法希望 MySQL 默认的序列参数能够吃
MySQL运行得稀一箭穿心。在Apache,
PHP,
MySQL的网架构中,MySQL对于性的影响极其充足,也是重要之主干部分。对于Discuz!论坛程序也是这么,MySQL的安装是否合理优

改为,直接影响及论坛的速跟承载量!同时,MySQL也是优化难度太酷之一个有些,不但用明白有MySQL专业知识,同时还欲丰硕时之观总括并且依照经验举行判断,然后设置合理之参数。
下边我们了解一下MySQL优化的一部分基础,MySQL的优化自身分为多少个部分,一是服务器物理硬件的优化,二凡是MySQL自身(my.cnf)的优化。

同等、服务器硬件对MySQL性能的熏陶
①磁盘寻道能力(磁盘I/O),以时胜转发SCSI硬盘(7200转/秒)为例,这种硬盘理论及诸秒寻道7200坏,这是情理特性决定的,没有辙改变。MySQL每秒钟皆以举行大气、复杂的询问操作,对磁盘的朗读写量由此可见。所以,平时认为磁盘I/O是掣肘MySQL性能的不过可怜因素有,对于日均访问量在100万PV以上之Discuz!论坛,由于磁盘I/O的制约,MySQL的属性会好低下!解决就无异制因素可以考虑以下三种植缓解方案:
使用RAID-0+1磁盘阵列,注意不要尝试以RAID-5,MySQL在RAID-5磁盘阵列上的频率不相会如你想的那么抢。
②CPU
对于MySQL应用,推荐使用S.M.P.架构的多路对如CPU,例如:能够使简单颗AMDXeon
3.6GHz的CPU,现在自较推荐用4U之服务器来专门做数据库服务器,不仅仅是针对于mysql。
③物理内存对于同样宝使用MySQL的Database
Server来说,服务器内存提出不要小于2GB,推荐应用4GB以上的物理内存,但是内存对于前几日之服务器而言可以说凡是一个得以忽略的题材,工作受到遇见了高端服务器基本上内存都超过了16G。

老二、MySQL自身因素当解决了上述服务器硬件制约因素后,让咱省MySQL自身的优化是哪操作的。对MySQL自身之优化重如果本着其配置文件my.cnf中的号参数举办优化调整。下边我们介绍部分针对性能影响比生之参数。
由于my.cnf文件之优化设置是同服务器硬件配置息息相关的,由此我们指定一个假想的服务器硬件环境:CPU:
2粒英特尔 Xeon 2.4GHz 内存: 4GB DDR 硬盘: SCSI
73GB(很广泛的2U服务器)。

下,大家遵照上述硬件配置结合一份已优化好之my.cnf举办认证:
#vim
/etc/my.cnf以下就排有my.cnf文件中[mysqld]段中之始末,其他段落内容针对MySQL运行性能影响有限,因此姑且忽略。
[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking
#避免MySQL的表锁定,收缩出错几率增强稳定性。
skip-name-resolve
#不准MySQL对表连接实行DNS解析,使用这无异于选项项可以消除MySQL举办DNS解析的工夫。但需留意,如若打开该选用,则有长途主机连接授权都使运用IP地址格局,否则MySQL将无法正常处理连接要!
back_log = 384
#back_log参数的价值提出在MySQL暂时已响应新请求以前的缺失日外小个请求可以叫存在堆栈中。
假使系统于一个少日外爆发诸多总是,则要增大该参数的价值,该参数值指定到的TCP/IP连接的侦听队列的分寸。不同之操作系统在这一个班大小上暴发其和谐的限量。
试图设定back_log高于你的操作系统的限以是杯水车薪的。默认值为50。对于Linux系统推荐设置为小于512之平头。
key_buffer_size = 256M
#key_buffer_size指定用于索引的缓冲区大小,扩张其可是得到重新好之目处理性能。对于内存在4GB左右之服务器该参数可设置也256M或者384M。注意:该参数值设置的了特别反而会是服务器全部效能下降!
max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M
#查询排序时所可以拔取的缓冲区大小。注意:该参数对应的分配内存是各国连接独占,假设暴发100只连,那么实际上分配的合计排序缓冲区大小为100
× 6 = 600MB。所以,对于内是4GB左右底服务器推荐设置为6-8M。
read_buffer_size = 4M
#朗诵查询操作所能应用的缓冲区大小。和sort_buffer_size一样,该参数对应的分配内存也是各国连接独享。
join_buffer_size = 8M
#一头查询操作所能以的缓冲区大小,和sort_buffer_size一样,该参数对应之分配内存也是各级连接独享。
myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M
#点名MySQL查询缓冲区的深浅。可以经过以MySQL控制台观看,倘诺Qcache_lowmem_prunes的价老坏,则注明平日现身缓冲不够的景观;假如Qcache_hits的值大可怜,则注脚查询缓冲使用大频繁,假如该值较小反而会潜移默化效用,那么可以设想不用查询缓冲;Qcache_free_blocks,若是该值分外酷,则讲明缓冲区中碎片很多。
tmp_table_size = 256M
max_connections = 768
#点名MySQL允许的然而特别连接进程数。假若在走访论坛通常平时出现Too Many
Connections的不当提 示,则需增大该参数值。
max_connect_errors = 10000000
wait_timeout = 10
#指定一个请求的最酷连接时间,对于4GB左右内存的服务器可以设置为5-10。
thread_concurrency = 8
#拖欠参数取值为服务器逻辑CPU数量*2,在本例中,服务器出2发物理CPU,而每粒物理CPU又襄助H.T超线程,所以实际取值为4*2=8
skip-networking
#打开该采纳可以彻底关闭MySQL的TCP/IP连接情势,要是WEB服务器是为长途连接的方访MySQL数据库服务器则毫不被该选项!否则将无法正常连接!
table_cache=1024   
#物理内存越大,设置就愈大.默认为2402,调至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有几乎独就是装也几,提议就此默认一般为8
key_buffer_size=256M                      
#默认为218,调到128最佳
tmp_table_size=64M                        
#默认为16M,调到64-256最挂
read_buffer_size=4M                      
#默认为64K
read_rnd_buffer_size=16M             
#默认为256K
sort_buffer_size=32M                    
#默认为256K
thread_cache_size=120              
#默认为60
query_cache_size=32M  

※值得注意的是:
多多状用具体境况具体分析
一、如果Key_reads太非常,则应该将my.cnf中Key_buffer_size变大,保持Key_reads/Key_read_requests至少1/100以上,越聊越好。
二、如果Qcache_lowmem_prunes很要命,就要多Query_cache_size的值。

 

相关文章