<b>讲授MySQL服务器安装之后若何疗养性能</b>[MySQL防范]
本文“<b>讲授MySQL服务器安装之后若何疗养性能</b>[MySQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
在面试MySQL DBA大概那些打算做MySQL性能优化的人时,我最喜好问题是:MySQL服务器按照默许设置安装完之后,应当做哪些方面的疗养呢?
令我很惊奇的是,有多少人对这个问题无法给出公道的答案,又有多少服务器都运行在默许的设置下.
固然你可以疗养很多MySQL服务器上的变量,但是在大大都普通的工作负载下,只有少数几个才真正重要.假如你把这些变量设置精确了,那么改正其他变量最多只能对系统性能改进有一定晋升.
key_buffer_size - 这对MyISAM表来说非常重要.假如只是利用MyISAM表,可以把它设置为可用内存的 30-40%.公道的值取决于索引大小、数据量以及负载 -- 记着,MyISAM表会利用操作系统的缓存来缓存数据,因此需求留出部份内存给它们,很多情形下数据比索引大多了.固然如此,需求老是查抄能否全部的 key_buffer 都被操纵了 -- .MYI 文件只有 1GB,而 key_buffer 却设置为 4GB 的情形是非常少的.这么做太浪费了.假如你很少利用MyISAM表,那么也保存低于 16-32MB 的key_buffer_size 以适应赐与磁盘的暂时表索引所需.
innodb_buffer_pool_size - 这对Innodb表来说非常重要.Innodb相比MyISAM表对缓冲更为敏感.MyISAM可以在默许的 key_buffer_size 设置下运行的可以,但是Innodb在默许的innodb_buffer_pool_size 设置下却跟蜗牛似的.由于Innodb把数据和索引都缓存起来,无需留给操作系统太多的内存,因此假如只需求用Innodb的话则可以设置它高达 70-80% 的可用内存.一些利用于 key_buffer 的法则有 -- 假如你的数据量不大,并且不会暴增,那么无需把innodb_buffer_pool_size 设置的太大了.
innodb_additional_pool_size - 这个选项对性能影响并不太多,至少在有差不多充足内存可分配的操作系统上是这样.不过假如你仍旧想设置为 20MB(大概更大),因此就需求看一下Innodb其他需求分配的内存有多少.
innodb_log_file_size 在高写入负载特别是大数据集的情形下很重要.这个值越大则性能相对越高,但是要注意到大概会增添恢复时间.我常常设置为64-512MB,按照服务器大小而异.
innodb_log_buffer_size 默许的设置在中等强度写入负载以及较短事件的情形下,服务器性能还可以.假如存在更新操作峰值大概负载较大,就应当考虑加大它的值了.假如它的值设置太高了,大概会浪费内存 -- 它每秒城市革新一次,因此无需设置超越1秒所需的内存空间.普通8-16MB就充足了.越小的系统它的值越小.
innodb_flush_logs_at_trx_commit 能否为Innodb比MyISAM慢1000倍而头大?看来大概你忘了改正这个参数了.默许值是 1,这意味着每次提交的更新事件(大概每个事件之外的语句)城市革新到磁盘中,而这相当耗费资源,特别是没有电池备用缓存时.很多利用程序,特别是从 MyISAM改变过来的那些,把它的值设置为 2 便可以了,也就是不把日记革新到磁盘上,而只革新到操作系统的缓存上.日记仍旧会每秒革新到磁盘中去,因此普通不会丧失每秒1-2次更新的损耗.假如设置为0就快很多了,不过也相对不安全了 -- MySQL服务器崩溃时就会丧失一些事件.设置为2批示丧失革新到操作系统缓存的那部份事件.
table_cache -- 翻开一个表的开销大概很大.比方MyISAM把MYI文件头标志该表正在利用中.你必定不但愿这种操作太频繁,所以普通要加大缓存数目,使得足以最大限度地缓存翻开的表.它需求用到操作系统的资源以及内存,对当前的硬件配置来说当然不是什么问题了.假如你有200多个表的话,那么设置为 1024 大概对比符合(每个线程都需求翻开表),假如衔接数对比大那么就加大它的值.我曾经见过设置为100,000的情形.
thread_cache -- 线程的成立和销毁的开销大概很大,因为每个线程的衔接/断开都需求.我普通至少设置为 16.假如利用程序中有大量的腾跃并发衔接并且 Threads_Created 的值也对比大,那么我就会加大它的值.它的目的是在普通的操作中无需成立新线程.
query_cache -- 假如你的利用程序有大量读,并且没有利用程序级别的缓存,那么这很有效.不要把它设置太大了,因为想要保护它也需求不少开销,这会招致MySQL变慢.普通设置为 32-512Mb.设置完之后最好是跟踪一段时间,查看能否运行杰出.在一定的负载压力下,假如缓存命中率太低了,就启用它.
注意:就像你看到的上面这些全局表量,它们都是根据硬件配置以及差别的存储引擎而差别,但是会话变量普通是按照差别的负载来设定的.假如你只有一些简单的查询,那么就无需增添 sort_buffer_size 的值了,固然你有 64GB 的内存.搞不好大概会降低性能.
我普通在解析系统负载后才来设置会话变量.
P.S,MySQL的发行版已经包含了各种 my.cnf 典范文件了,可以作为配置模板利用.普通这比你利用默许设置好的多了.
以上是“<b>讲授MySQL服务器安装之后若何疗养性能</b>[MySQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:本文地址: | 与您的QQ/BBS好友分享! |