首页 / 帖子
请问MySQL数据库有什么需要优化的参数吗?

常用的优化参数,尤其是innodb的。

谢谢!

2个答案
YOYO
发布于:2014-03-26 22:17

个人整理了一下几个参数:

innodb_buffer_pool_size= 16G
#这对Innodb表来说非常重要。Innodb相比MyISAM表对缓冲更为敏感

MyISAM可以在默认的key_buffer_size设置下运行的可以,然而Innodb在默认的innodb_buffer_pool_size设置下却跟蜗牛似的。由于Innodb把数据和索引都缓存起来,无需留给操作系统太多的内存,因此如果只需要用Innodb的话则可以设置它高达70-80% 的可用内存。

(=MyISAM的key_buffer_size)

innodb_flush_log_at_trx_commit = 2
#如果将此参数设置为1,将在每次提交事务后将日志写入磁盘。
#为提供性能,可以设置为0或2,但要承担在发生故障时丢失数据的风险。
#设置为0表示事务日志写入日志文件,而日志文件每秒刷新到磁盘一次。
#设置为2表示事务日志将在提交时写入日志,但日志文件每次刷新到磁盘一次。


innodb_thread_concurrency= 8
#服务器有几个CPU就设置为几,建议用默认设置,一般为8.


innodb_max_dirty_pages_pct= 90
#Buffer_Pool中Dirty_Page所占的数量,直接影响InnoDB的关闭时间。

推荐阅读 http://www.taobaodba.com/html/221_innodb_max_dirty_pages_pct_checkpoint.html 

参数innodb_max_dirty_pages_pct可以直接控制了Dirty_Page在Buffer_Pool中所占的比率,而且幸运的是innodb_max_dirty_pages_pct是可以动态改变的。所以,在关闭InnoDB之前先将innodb_max_dirty_pages_pct调小,强制数据块Flush一段时间,则能够大大缩短MySQL关闭的时间。

发布于:2014-12-16 16:47

推荐个关于MyISAM的参数:

key_buffer_size

这对MyISAM表来说非常重要。如果只是使用MyISAM表,可以把它设置为可用内存的 30-40%。合理的值取决于索引大小、数据量以及负载。该值决定了数据库索引处理的速度,尤其是索引读的速度。


key_buffer_block_size - 索引缓存中的Cache Block Size.

用来设置每个Cache Block的大小,实际上也同时限定了将".MYI"文件中的Index Block被读入时File Block的大小。