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; 查询当前缓冲池大小。
相关推荐
Re.不晚16 分钟前
MySQL进阶之战——索引、事务与锁、高可用架构的三重奏
数据库·mysql·架构
老邓计算机毕设25 分钟前
SSM智慧社区信息化服务平台4v5hv(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·智慧社区、·信息化平台
麦聪聊数据1 小时前
为何通用堡垒机无法在数据库运维中实现精准风控?
数据库·sql·安全·低代码·架构
2301_790300961 小时前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python
m0_736919101 小时前
用Pandas处理时间序列数据(Time Series)
jvm·数据库·python
亓才孓1 小时前
[JDBC]PreparedStatement替代Statement
java·数据库
m0_466525292 小时前
绿盟科技风云卫AI安全能力平台成果重磅发布
大数据·数据库·人工智能·安全
爱学习的阿磊2 小时前
使用Fabric自动化你的部署流程
jvm·数据库·python
枷锁—sha2 小时前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
惜分飞2 小时前
ORA-600 kcratr_nab_less_than_odr和ORA-600 4193故障处理--惜分飞
数据库·oracle