内存 buffer pool
MySQL 在启动时默认被分配给 512MB RAM ;其中 InnoDB buffer pool 用于缓存表数据、索引及其他的一些辅助缓冲池,为了高效的大量读, buffer pool 划分 pages ;为了高效进行缓存管理, buffer pool 应用多种 LRU ( least recently used )算法,将相邻的 page 串成链,管理冷热数据。
1) 配置 InnoDB Buffer Pool Size
innodb_buffer_pool_size 为控制 buffer pool 大小的参数,通常推荐系统内存的 50~70% 。默认值 128M 。 innodb_buffer_pool_size 参数 5.7 后可以在线调整,必须等于或整数倍 innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances ;
例如:
mysql> SET GLOBAL innodb_buffer_pool_size=402653184;
or my.cnf
[mysqld]
innodb_buffer_pool_size=402653184
l innodb_buffer_pool_chunk_size 参数默认值 128M ,只能在启动时调整(命令行或者配置文件),且以 1M 为单位;
shell> mysqld --innodb-buffer-pool-chunk-size=134217728
or my.cnf
[mysqld]
innodb_buffer_pool_chunk_size=134217728
innodb_buffer_pool_instances default value is 1;
l innodb_buffer_pool_instances 默认为 8 (or 1 if innodb_buffer_pool_size < 1GB) ,如果是 Windows 或者 32-bit platforms ,默认值为系统自动设置 (autosized); 其作用是划分 buffer pool 为多个区,提高并发效率。
2) 查询状态 mysql> SHOW STATUS WHERE Variable_name='InnoDB_buffer_pool_resize_status'; Buffer pool resizing progress is also logged in the server error log
3) 预载入 buffer pool
要在服务器启动时预载入 buffer pool ,请启用选项:
innodb_buffer_pool_dump_at_shutdown 和 innodb_buffer_pool_load_at_startup 。
