InnoDB 缓冲池

InnoDB 缓冲池

InnoDB 维护一个称为缓冲池的存储区域, 用于缓存内存中的数据和索引
缓冲池的大小当然是越大越好 (为服务器上的其他进程留下足够的内存)

InnoDB 已块的形式存储缓存 通过以下参数配置缓存大小

// 查看总缓存大小
show global variables like 'innodb_buffer_pool_size';

//   查看每个缓存池的大小
show global variables like 'innodb_buffer_pool_chunk_size';

// 缓存池的数量
show global variables like 'innodb_buffer_pool_instances';

总缓存大小必须是 ( 每个缓存池的大小 * 缓存池的数量 ) 的倍数
当设置的innodb_buffer_pool_size不是 innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances倍数时 那么mysql会自动调整 innodb_buffer_pool_size 的大小 ( 向上取值到 最近的一次倍数 )

# 如
innodb_buffer_pool_size = 9G
innodb_buffer_pool_chunk_size = 128M
innodb_buffer_pool_instances = 16

128*16 = 2048M 
那么 9G 不是 2048M 的倍数 则 innodb_buffer_pool_size 自动向上取最近的一个为2048M倍数的值 10G 

设置缓存池大小

动态设置
SET GLOBAL innodb_buffer_pool_size = 402653184;

# 配置文件
[mysqld]
innodb_buffer_pool_size = 134217728

配置多个缓冲池
将缓冲池划分为多个单独的实例,通过减少不同线程读取和写入缓存的争用来提高并发性
此功能通常适用于千兆范围内的系统
innodb_buffer_pool_instances 默认值为 1
调整参数 将 innodb_buffer_pool_instances 最大可设置为64个
将每个缓存池的大小至少分配到1G或更高

MySQL 5.7 参考手册 – InnoDB缓存池

    原文作者:mashen
    原文地址: https://www.jianshu.com/p/b98b06667b0a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞