首页 > 数据库 >【MYSQL】4、mysql中的Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests

【MYSQL】4、mysql中的Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests

时间:2024-01-29 16:26:47浏览次数:34  
标签:buffer 缓冲 read reads Innodb pool

原文链接:https://blog.csdn.net/qq_35462323/article/details/131811593

1、Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests的含义?

Innodb_buffer_pool_reads Innodb_buffer_pool_reads The number of logical reads that InnoDB could not satisfy from the buffer pool, and had to read directly from disk. InnoDB是MySQL数据库使用的一种存储引擎。它将数据存储在内存中的缓冲池中,称为InnoDB缓冲池。 当从数据库请求数据时,首先搜索InnoDB缓冲池。如果数据未在缓冲池中找到,则必须将其从磁盘读入缓冲池。这也就是官网上说的Cound not satisfy from the buffer pool,缓冲池中无法中找到满足条件的数据,而必须从磁盘中读入缓冲池,这个操作称为Innodb_buffer_pool_reads(InnoDB缓冲池读取)。 Innodb_buffer_pool_reads读衡量了需要从磁盘读取到缓冲池的次数。 通常情况下,我们希望Innodb_buffer_pool_reads的值越小越好,因为它表示从磁盘中读取数据页到缓冲池中的次数越少,缓冲池的命中率越高,查询性能和系统响应时间也会更好。 如果Innodb_buffer_pool_reads的值较大,则可能表示缓冲池的大小不足或者热数据没有被缓存到缓冲池中,需要增加缓冲池的大小或者优化MySQL的查询语句,以提高缓存命中率和减少磁盘I/O的次数。   Innodb_buffer_pool_read_requests Innodb_buffer_pool_read_requests The number of logical read requests. 当从数据库请求数据时,首先搜索Innodb缓冲池,如果数据已经在缓冲池中存在,则可以从磁盘读取,此操作称为Innodb_buffer_pool_read_requests   InnoDB(缓冲池读取请求)。 InnoDB缓冲池读请求指标衡量了InnoDB能够直接从缓冲池中读取满足数据请求的次数,而无需从磁盘中读取数据。   与Innodb_buffer_pool_reads不同的是,Innodb_buffer_pool_reads衡量了需要从磁盘读取数据到缓冲池的次数,而Innodb_buffer_pool_read_requests衡量了数据已经在缓冲池中而无需从磁盘读取数据。 Innodb_buffer_pool_reads涉及到 IOPS 资源的消耗,Innodb_buffer_pool_read_requests涉及到 CPU 资源的消耗。

2、Innodb_buffer_pool_read_requests与CPU的关系

  而这种现象是什么原因导致的呢? 大量的逻辑读对CPU的压力比较大是因为 InnoDB 缓冲池的工作机制需要大量的 CPU 计算来完成。 当 InnoDB 需要读取一个数据页时,会先在缓冲池中查找该页,如果该页已经在缓冲池中,则可以直接从缓冲池中读取;如果该页不在缓冲池中,则需要从磁盘中读取,然后将该页加入缓冲池中。 在这个过程中,需要进行大量的 CPU 计算,例如: 计算数据页的哈希值,用于在缓冲池中查找该页; 计算数据页的校验和,用于检查数据页是否被破坏; 执行 LRU算法,用于决定哪些数据页应该被淘汰; 管理缓冲池的互斥锁,避免多个线程同时修改缓冲池等问题。   而这种情况一般是服务中存在一些低效SQL,导致查询执行成本高,为了获得结果集需要访问大量的数据(平均逻辑读很高),这种情况可能是小表的全表扫描,或者索引的效率不高。这种情况下,mysql的qps可能并不会很高。 关于衡量SQL的执行成本,可通过其需要扫描的表数据行数和结果集数据行数的比率来衡量。该比率越小说明查询语句效率越高。 在处理MYSQL CPU性能问题时,我们可重点关注下Innodb_buffer_pool_read_requests指标。

3、总结

Innodb_buffer_pool_reads衡量了需要从磁盘读取数据到缓冲池的次数; Innodb_buffer_pool_read_requests衡量了数据已经在缓冲池中而无需从磁盘读取数据; Innodb_buffer_pool_read_requests涉及到 CPU 资源的消耗,我们在处理CPU性能问题时可重点关注该指标;

标签:buffer,缓冲,read,reads,Innodb,pool
From: https://www.cnblogs.com/cmxu/p/17994758

相关文章

  • MySQL InnoDB MVCC
    MVCC-基本概念当前读读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。对于我们日常的操作,如:select...lockinsharemode(共享锁),select...forupdate,update,insert,delete(排他锁)都是一种当前读。快照读简单的selec......
  • MySQL InnoDB事务原理
    事务事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 特性原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。一致性(Consistency):事务完成时,必......
  • MySQL InnoDB引擎架构
    逻辑存储结构:表空间(ibd文件):一个mysql实例可以对应多个表空间,用于存储记录,索引等数据。段:分为数据段(Leafnodesegment),索引段(Non-leafnodesegment)、回滚段(Rollbacksegment),InnoDB是索引组织表,数据段就是B+树的叶子节点,索引段即为B+树的非叶子节点。段用来管理多个Exte......
  • net8字符串匹配查找System.Buffers.SearchValues类
    新增的System.Buffers.SearchValues类,可以用来进行字符串的查找和匹配,相比较 string 类型的操作,性能有大幅提升,下面还是用BenchmarkDotNet进行测试:BenchmarkRunner.Run<SearchValuesTest>();Console.ReadKey();[SimpleJob(RunStrategy.ColdStart,iterationCount:5)]......
  • C#数组对象池ArrayPool<T>底层
    深度解析C#数组对象池ArrayPool<T>底层原理 提到池化技术,很多同学可能都不会感到陌生,因为无论是在我们的项目中,还是在学习的过程的过程,都会接触到池化技术。池化技术旨在提高资源的重复使用和系统性能,在.NET中包含以下几种常用的池化技术。(1)、连接池(Connecti......
  • 【JAVA基础】String、StringBuilder和StringBuffer的区别——巨详细
    先给答案String是不可变的,StringBuilder和StringBuffer是可变的。而StringBuffer是线程安全的,而StringBuilder是非线程安全的。源码先看看jdk1.8中关于String、StringBuilder和StringBuffer部分的源码,我们看某个类或者某个属性是否不可变首先要看修饰类的关键字是什么,final表示不可......
  • eventPollerPool-Pipe 分析
    1.eventPoller分析1.1event设置:基本知识详见manepollLevel-triggeredandedge-triggered/水平触发和边沿触发/LT:水平触发没有标识;ET:边沿触发EPOLLET;默认触发方式是水平触发,什么标识都不用指定,如果要指定边沿触发,则指定为EPOLLET;参考文章:https://blog.......
  • 深度解析C#数组对象池ArrayPool<T>底层原理
    提到池化技术,很多同学可能都不会感到陌生,因为无论是在我们的项目中,还是在学习的过程的过程,都会接触到池化技术。池化技术旨在提高资源的重复使用和系统性能,在.NET中包含以下几种常用的池化技术。(1)、连接池(ConnectionPool):用于管理数据库连接的池化技术。连接池允......
  • InnoDB引擎的4大特性
    InnoDB引擎具有以下四大特性:事务支持:InnoDB引擎支持ACID(原子性、一致性、隔离性、持久性)事务,确保数据的完整性和一致性。行级锁定:InnoDB引擎使用行级锁定,可以提高并发性能,减少数据锁定对其他事务的影响。外键约束:InnoDB引擎支持外键约束,可以确保数据的完整性,实现数据之间的关联......
  • MySQL学习总结 (InnoDB)
    主要内容:存储结构索引锁事务存储结构表索引组织表:表是根据主键顺序组织存放的。如果表中没有非空惟一索引,引擎会自动创建一个6字节大小的指针。主键的索引是定义索引的顺序,而不是建表时列的顺序。表空间:逻辑结构的最高层,所有的数据都存放在表空间中。段:表空间由各个段组成,常见的段......