Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2772367
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(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。

阅读(1932) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~