如果你的数据库运行缓慢,或者出于某种原因无法响应查询,技术栈中每个依赖数据库的组件都会遭受性能问题。为了保证数据库的平稳运行,你可以主动监控以下这个与性能及资源利用率相关的指标:缓冲池使用情况。

缓冲池使用情况

MySQL 默认的存储引擎 InnoDB 使用了一片称为缓冲池的内存区域,用于缓存数据表与索引的数据。缓冲池指标属于资源指标,而非工作指标。

默认设置下,缓冲池的大小通常相对较小,为 128MiB。不过,MySQL 建议可将其扩大至专用数据库服务器物理内存的 80% 大小。然而,MySQL 也指出了一些注意事项:InnoDB 的内存开销可能提高超过缓冲池大小 10% 的内存占用。并且,如果你耗尽了物理内存,系统会求助于分页,导致数据库性能严重受损。

缓冲池大小调整操作是分块进行的,缓冲池的大小必须为块的大小乘以实例的数目再乘以某个倍数。

innodb_buffer_pool_size = N * innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances

块的默认大小为 128 MiB,但是从 MySQL 5.7.5 开始可以自行配置。以上两个参数的值都可以通过如下方式进行检查:

SHOW GLOBAL VARIABLES LIKE "innodb_buffer_pool_chunk_size";

SHOW GLOBAL VARIABLES LIKE "innodb_buffer_pool_instances";

监控指标:

指标 Innodb_buffer_pool_read_requests 及 Innodb_buffer_pool_reads 对于理解缓冲池利用率都非常关键。Innodb_buffer_pool_read_requests 追踪合理读取请求的数量,而Innodb_buffer_pool_reads 追踪缓冲池无法满足,因而只能从磁盘读取的请求数量。我们知道,从内存读取的速度比从磁盘读取通常要快好几个数量级,因此,如果 Innodb_buffer_pool_reads 的值开始增加,意味着数据库性能大有问题。

缓冲池利用率是在考虑扩大缓冲池之前应该检查的重要指标。利用率指标无法直接读取,但是可以通过下面的方式简单地计算得到:

(Innodb_buffer_pool_pages_total - Innodb_buffer_pool_pages_free) / Innodb_buffer_pool_pages_total

如果你的数据库从磁盘进行大量读取,而缓冲池还有许多闲置空间,这可能是因为缓存最近才清理过,还处于热身阶段。如果你的缓冲池并未填满,但能有效处理读取请求,则说明你的数据工作集相当适应目前的内存配置。

将缓冲池指标转化为字节:

大多数缓冲池指标都以内存页面为单位进行记录,但是这些指标也可以转化为字节,从而使其更容易与缓冲池的实际大小相关联。例如,你可以使用追踪缓冲池中内存页面总数的服务器状态变量找出缓冲池的总大小(以字节为单位):

Innodb_buffer_pool_pages_total * innodb_page_size

InnoDB 页面大小是可调整的,但是默认设置为 16 KiB,或 16,384 字节。你可以使用 SHOW VARIABLES 查询了解其当前值:

SHOW VARIABLES LIKE "innodb_page_size";

mysql 缓冲池监控_一文看懂mysql数据库监控指标--缓冲池使用情况相关推荐

  1. mysql删除分表键_一文看懂 MySQL 分区和分表,提高表增删改查效率

    原标题:一文看懂 MySQL 分区和分表,提高表增删改查效率 作者:冯帅,精通Oracle. MySQL. 擅长异构数据库数据同步及迁移.数据库的设计和调优,对高可用方案有深入研究. MySQL分区和 ...

  2. mysql xa 和普通事务_一文看懂MySQL中基于XA实现的分布式事务

    概述 前面已经介绍了2PC和3PC方面的内容,那么MySQL数据库在分布式事务这块又是怎么规划呢? XA事务简介 XA 事务的基础是两阶段提交协议.需要有一个事务协调者来保证所有的事务参与者都完成了准 ...

  3. mysql序列号生成_一文看懂mycat的6种全局序列号实现方式

    概述 在实现分库分表的情况下,数据库自增主键已无法保证自增主键的全局唯一.为此,MyCat 提供了全局sequence,并且提供了包含本地配置和数据库配置等多种实现方式.下面对这几种实现方式做一下介绍 ...

  4. mysql存储过程输入参数拆分_一文看懂mysql数据库存储过程、函数、视图、触发器、表...

    概述 抽空总结一下mysql的一些概念性内容,涉及存储过程.函数.视图.触发器等. 一.查看存储过程.函数.视图.触发器.表 1.存储过程 select * from mysql.proc where ...

  5. mysql 同步复制 半同步复制_一文看懂MySQL的异步复制、全同步复制与半同步复制...

    今天主要聊一下MySQL的异步复制.全同步复制与半同步复制,目前我们生产库实际上用的就是异步复制了,后面再转成半同步复制. 一.MYSQL复制架构衍生史 在2000年,MySQL 3.23.15版本引 ...

  6. zabbix3.4监控linux磁盘使用率_一文看懂Linux全能型监控命令--dstat,值得收藏

    概述 在linux上有top.free.iostat.vmstat.netstat等诸多监控系统各项性能的工具,如top,可以实时监控到系统负载.内存等使用情况,iostat能监控系统I/O情况,而v ...

  7. mysql逻辑设计_一文看懂数据库设计之逻辑设计,值得收藏

    概述 数据库逻辑设计是从事数据库应用设计.开发.运行维护等各方面工作的一个重要的基础性工作.根据不同业务和应用需求,确定并遵循数据库逻辑设计原则,例如按照第三范式开展逻辑设计,不仅能满足减少数据冗余. ...

  8. JAVA秒杀mysql层实现_一文搞懂MySQL的Join,聊一聊秒杀架构设计

    正文 MySQL的Join到底能不能用 经常听到2种观点: join性能低,尽量少用 多表join时,变为多个SQL进行多次查询 其实对于上面的观点一定程度上是正确的,但不是完全正确.但之所以流传这么 ...

  9. oracle组合索引失效_一文看懂Oracle数据库的三大索引类型

    概述 今天主要介绍Oracle数据库的三大索引类型,仅供参考. 一.B-Tree索引 三大特点:高度较低.存储列值.结构有序 1.1利用索引特性进行优化 外键上建立索引:不但可以提升查询效率,而且可以 ...

最新文章

  1. Visual Studio2005奇怪的bug及解决【月儿原创】
  2. javaweb学习总结——Filter高级开发
  3. python【蓝桥杯vip练习题库】ALGO-148 5-1最小公倍数(GCD)
  4. 今日Google图标——Frank Lloyd Wright诞辰138周年
  5. SpringBoot_日志-日志框架分类和选择
  6. iOS KVO crash 自修复技术实现与原理解析
  7. 浅析Unity 坐标系
  8. PHP mysql_real_escape_string() 函数防止数据库攻击
  9. Ansible(五)远程创建用户并对密码进行加密设置
  10. C#用SqlCilent模式连接数据库实例
  11. Python 函数参数 传引用还是传值
  12. 怎样启动Windows系统呢
  13. java串口rxtx的若干坑
  14. linux复制压缩包到另一个文件夹,linux复制文件到另一个文件夹或目录
  15. win10 internet 信息服务器,Win10无internet访问权限怎么解决?Win10无网络解决方法
  16. Push上传出错:Support for password authentication was removed on August 13, 2021.git did not exit cleanly
  17. Android手机怎么找回微信好友,安卓手机微信好友删除怎么找回?这三种方法真香...
  18. 一个小白对接电子面单的哪些坑?
  19. 【大脑】--如何让大脑快速记忆
  20. 鸟哥的Linux私房菜(服务器)- 第十九章、主机名控制者: DNS 服务器

热门文章

  1. 已知A点的经纬度、朝向和与B点的距离,得到B点的经纬度
  2. Belt闪电贷攻击后续:总损失金额5000万美元,48小时内发布补偿计划
  3. 视图 --- 外传
  4. vue 设置背景颜色及透明度
  5. 真实3D纹理绘制工具:Mari for mac(支持big sur) v4.7v1
  6. ffmpeg在线文档
  7. 判断数独是否成功(c++)
  8. 2020年图灵奖Jeffrey和Alfred人物简介
  9. 漂亮的css文字效果
  10. 时下我国鞋业ERP解决方案与需求分析