这篇文章整理一下Innodb常用的调优参数,并给出建议。
设定参数
innodb_buffer_pool_size
innodb_buffer_pool_size是Innodb中最重要的设定参数,如果只能选一个进行优化,那就最好选择innodb_buffer_pool_size。此项参数在5.6.2引进,5.7之前的版本需要重启数据库才能生效,而5.7之后则可以动态调整。
设定方式和准则:
innodb_buffer_pool_size缓存的除了数据还有索引的信息.
- 根据官方给出的建议,如果是专用的服务器的话,可以将机器内存的80%作为innodb_buffer_pool_size值。这一经验也被广泛的采纳,但是需要注意的是官方的文章中还有一个但是:“但是,需要注意的是这样做可能会导致一些潜在性的问题”,这些问题包括:
- 过大的内存设定可能会导致操作系统的页面交换操作导致性能降低
- 由于会预留一部分内存用于缓存和结构控制,所以设定值最好是比所需数据量大10%
- 需要和innodb_buffer_pool_instances一起结合考虑进行设定,在内存小于1G的情况下,innodb_buffer_pool_instances缺省值为1。当内存较大的时候可以考虑结合innodb_buffer_pool_instances设定提高性能。
- 建议一个16G内存的机器,如果不是完全作为数据库专用,可考虑innodb_buffer_pool_size设定为8G,innodb_buffer_pool_instances设定为4
innodb_buffer_pool_chunk_size
innodb_buffer_pool_size的动态调整是建立在innodb_buffer_pool_chunk_size基础之上的,innodb_buffer_pool_chunk_size用于动态调整时优化移动的速度。
设定方式和准则:
innodb_buffer_pool_chunk_size=innodb_buffer_pool_size/innodb_buffer_pool_instances
8G的innodb_buffer_pool_size +