全部博文(389)
分类: Mysql/postgreSQL
2014-10-15 20:35:28
MySQL安装需要更改的十大性能变量
Mysql的参数设置有几百个,对于每个参数都去做一个合适的调整。这是一个很大的工作量,而且有些
参数在大部分场景下已经能够很好的工作了.因此这里讨论的只是最需要修改的十个参数.Innodb是mysql上使
用最多的存储引擎,在5.6以后的版本中,已经默认就是Innodb了。所以这些设置基本上和innodb相关的.
1.innodb_buffer_pool_size.定义了innodb数据缓冲区的大小,单位可以是字节.innodb有自己的数据缓冲区,
通过把常用的数据缓冲到内存中,解少了IO的压力,这一点和MyISAM极为不同.因此尽可能分配足够大的内存
给到innodb使用.
2,innodb_log_file_size,定义了innodb自己的事务日志大小.如果设置够大,可以减少写的压力,但是在崩溃
恢复的时候,需要更多的时间扫描文件.如果设置很小,会使日志文件切换太频繁。而日志文件切换是一个高成本
的操作。尽量设置1G以上的大小。注意在5.5的版本中,日志大小不能超过4G,而在后续的版本上没有此限制.
3,max_connections,限制Mysql的最大用户连接,默认是150个连接,对于很多应用来说这个设置都小了,因此调整成
合适的大小,而不要出现"too many connections"错误,但是需要注意的是该设置和内存使用有关系,因为每个连接需
要内存开销。
4,innodb_file_per_table,定义innodb的表空间管理模式。innodb管理表空间分为共享和每表,如果是共享,所有数据都存放
在共享的表空间中,如果是每表,则每个表都存放单一个ibd文件中.使用每表的方式好处多,详情可以参考官方手册。在5.6以后
默认使用每表了.
5,innodb_flush_log_at_trx_commit,定义在事务提交时,是否刷新日志内容到磁盘中,默认是0,表示由系统自动刷新,改为1,表示
每次事务提交后刷新,设置为2,表示系统每秒钟刷新一次。该参数对于系统性能影响极大。一般对于安全性要求高的系统都设置1,其他的
情况考虑0,2.设置为1后,事务处理速度很大程度上受限于磁盘IO速度.
6,innodb_flush_method,定义了innodb对于数据和事务日志文件如果刷新的模式。对于有电池保护的硬件RAID的控制器,设置为O_DIRECT,避免
在OS文件系统级别再次被缓冲.
7,innodb_log_buffer_size,定义了log_buffer的大小,默认是1M, 对于长事务或是事务更新有text/blob字段,可能不够用。如果innodb_log_wait
状态变量有大于0的情形,增加该参数的值.
8,log_bin/sync_binlog, 是否打开binlog日志,每次事务结束后,把相关的语句写到一个文本文件。
9,query_cache_size,定义QUERY CACHE的大小。QUERY CACHE在并发高的情况下很容易成为瓶劲。所以尽量关闭,在5.6以后的版本中,QUERY CACHE默认就是
关闭了.
10. skip_name_resolve.当客户端连接时,mysql需要根据ip来进行反向查询主机名之类的,来做权限检查。当DNS很慢的时候,可能很容易成为瓶劲,所以在
参数文件中增加此设置.
注:本文参考了percona的相关PPT。