这个参数主要作用是缓存innodb表的索引,数据,插入数据时的缓冲
默认值:128M
专用mysql服务器设置的大小: 操作系统内存的70%-80%最佳。
MySQL 5.7.5后Innodb_buffer_pool_size一方面可以动态分配。但另一方面也引入了一个新特性。 bp分配必须是innodb_buffer_pool_chunk_size的倍数。同时最好是:
innodb_buffer_pool_chunk_size*innodb_buffer_pool_instances.
innodb_buffer_pool_chunk_size默认是128M.
当Innodb_buffer_pool_size分配小于innodb_buffer_pool_chunk_size时,innodb_buffer_pool_chunk_size收缩到等于innodb_buffer_pool_size/innodb_buffer_pool_instances.
当于innodb_buffer_pool_size 大于innodb_buffer_pool_chunk_size时,innodb_buffer_pool_chunk_size自动取innodb_buffer_pool_chunk_size的倍数从而获取更好的性能。
所以于MySQL5.7.5对于Buffer的分配需要提前计算一下。 尽量让 innodb_buffer_pool_size = innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances 从而获取一个较佳的性能。
设置方法:
my.cnf文件
innodb_buffer_pool_size = 6G
此外,这个参数是非动态的,要修改这个值,需要重启mysqld服务。
所以设置的时候要非常谨慎。
并不是设置的越大越好。设置的过大,会导致system的swap空间被占用,导致操作系统变慢,从而减低sql查询的效率。
例子
代码如下 | 复制代码 |
mysql> SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_data'; mysql> SHOW GLOBAL STATUS LIKE 'Innodb_buffer_pool_pages_total';
'Innodb_buffer_pool_pages_data' X 100 / 'Innodb_buffer_pool_pages_total' 当结果 > 95% 则增加 innodb_buffer_pool_size, 建议使用 ram total 75% |