innodb_buffer_pool_size是什么?

innodb_buffer_pool是
InnoDB
缓冲池,是一个内存区域保存缓存的
InnoDB
数据为表、索引和其他辅助缓冲区。innodb_buffer_pool_size 是这个缓冲池的大小,默认128M(即134217728 bytes)。

innodb_buffer_pool_size有什么用?

如果不设置innodb_buffer_pool_size,在生产环境的sql执行效率将大大下降,原因是缓存的空间变小,能缓存的数据量有限,缓存的命中率大打折扣,会导致反复去磁盘上读数据,众所周知磁盘的速度远远低于内存的执行效率。

innodb_buffer_pool_size的值配置有什么要求?

innodb_buffer_pool_size的值必须是(
innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
)的整数倍,即可以相等或更大。

-- 显示当前使用的innodb缓冲池大小 及 缓冲池实例数与主干大小
SELECT @@innodb_buffer_pool_size as pool_size,
@@innodb_buffer_pool_instances as pool_instances,
@@innodb_buffer_pool_chunk_size as chunk_size;

innodb_buffer_pool_size设置方式

两种设置方式,区别在于MySQL的运行状态,静态设置需要重启MySQL,动态设置在MySQL运行期动态调整。

静态设置

  • 修改my.cnf,在
    [mysqld]
    作用域添加
    innodb_buffer_pool_size=计算值
  • 重启mysql。

动态设置

  • 执行
    SET GLOBAL innodb_buffer_pool_size=计算值;
    设置缓冲池大小。
  • 执行
    SHOW STATUS WHERE Variable_name='InnoDB_buffer_pool_resize_status';
    查询缓冲池大小改变状态,出现
    Completed resizing buffer pool at 时间戳
    即完成。
  • 执行
    SELECT @@innodb_buffer_pool_size;
    查询当前缓冲池大小。

标签: none

添加新评论