MySQL服务端innodb_buffer_pool_size配置参数

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)的整数倍,即可以相等或更大。

sql 复制代码
-- 显示当前使用的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; 查询当前缓冲池大小。
相关推荐
Mr.kanglong4 小时前
【MySQL】初始MySQL、库与表的操作
数据库·mysql
GIS小小研究僧4 小时前
PostgreSQL 数据库备份与还原
数据库·postgresql·oracle·postgis
西木Qi5 小时前
数据库备份、主从、集群等配置
数据库
qw9495 小时前
MySQL(高级特性篇) 13 章——事务基础知识
数据库·mysql
MXsoft6185 小时前
基于监控易一体化运维软件的浪潮服务器监控指标详解
运维·数据库
码农幻想梦5 小时前
实验十 数据库完整性实验
数据库·sql·oracle
小安同学iter5 小时前
MySQL数据库(二)
数据库·sql·mysql·oracle
努力成为头发茂密的程序员6 小时前
(0基础版,无需输入代码爬取)新手小白初步学习八爪鱼采集器
数据库·学习·数据分析
martian6656 小时前
第22篇:Python开发进阶:详解使用SQLAlchemy进行ORM数据库编程技术
数据库·python·oracle
zm7 小时前
C基础寒假练习(4)
java·前端·数据库