mysql中的Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests

Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests是什么?

mysql服务器维护了很多状态变量(status variables),这些变量提供了其相关操作的信息。

我们可以通过SHOW [GLOBAL | SESSION] STATUS 查看这些变量以及变量值。这些变量有很多,Innodb_buffer_pool_reads和Innodb_buffer_pool_read_requests是其中的两个,我们可以通过SHOW [GLOBAL | SESSION] STATUS like '%innodb_buffer_pool_%'命令来查看它们。

SHOW [GLOBAL | SESSION] STATUS like '%innodb_buffer_pool_%'

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_requestsInnoDB(缓冲池读取请求)。

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 资源的消耗。

Innodb_buffer_pool_read_requests与CPU的关系

有时候我们可以会看到一些CPU 100%的场景,并且cpu的上涨曲线与Innodb_buffer_pool_read_requests的上涨曲线是一致的。如下图所示:

而这种现象是什么原因导致的呢?

大量的逻辑读对CPU的压力比较大是因为 InnoDB 缓冲池的工作机制需要大量的 CPU 计算来完成。

当 InnoDB 需要读取一个数据页时,会先在缓冲池中查找该页,如果该页已经在缓冲池中,则可以直接从缓冲池中读取;如果该页不在缓冲池中,则需要从磁盘中读取,然后将该页加入缓冲池中。

在这个过程中,需要进行大量的 CPU 计算,例如:

  • 计算数据页的哈希值,用于在缓冲池中查找该页;

  • 计算数据页的校验和,用于检查数据页是否被破坏;

  • 执行 LRU 算法,用于决定哪些数据页应该被淘汰;

  • 管理缓冲池的互斥锁,避免多个线程同时修改缓冲池等问题。

而这种情况一般是服务中存在一些低效SQL,导致查询执行成本高,为了获得结果集需要访问大量的数据(平均逻辑读很高),这种情况可能是小表的全表扫描,或者索引的效率不高。这种情况下,mysql的qps可能并不会很高。

关于衡量SQL的执行成本,可通过其需要扫描的表数据行数和结果集数据行数的比率来衡量。该比率越小说明查询语句效率越高。

在处理MYSQL CPU性能问题时,我们可重点关注下Innodb_buffer_pool_read_requests指标。

总结

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

参考:

https://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html https://developer.aliyun.com/article/165980

图片

点个“赞 or 在看” 你最好看!

喜欢,就关注我吧!

图片

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/40221.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux--获取最近一次的进程退出码:echo $?

举例&#xff1a; #include <stdio.h> int main() { printf("hello world,pid: %d,ppid: %…

面试题:redis是单线程、StringBuffer是线程安全的

1、说明String 和StringBuffer的区别 类底层/ 可变&#xff1f;线程安全Stringfinal char[] 不可变是StringBuffer char[] 可变 是&#xff08;synchronized方法&#xff09;StringBuilder char[] 可变否 (4条消息) Java基础&#xff1a;String、StringBuffer、…

Linux 漏洞扫描

Linux 漏洞扫描程序会仔细检查基于 Linux 的系统&#xff0c;以减轻潜在的风险和漏洞。 什么是 Linux 漏洞扫描程序 Linux 漏洞扫描程序是一种专门的漏洞扫描工具&#xff0c;旨在识别基于 Linux 的系统中的安全漏洞和弱点,它会扫描配置错误、过时的软件版本和已知漏洞。 为…

TypeScript 学习笔记 环境安装-类型注解-语法细节-类-接口-泛型

文章目录 TypeScript 学习笔记概述TypeScript 开发环境搭建 类型注解类型推断 数据类型JS的7个原始类型Array数组object、Object 和 {}可选属性 ? 和 可选链运算符?. function函数TS类型: any类型 | unknow类型TS类型: void类型TS类型&#xff1a;never类型 &#xff08;几乎…

SQL 删除重复的电子邮箱

196 删除重复的电子邮箱 SQL架构 表: Person -------------------- | Column Name | Type | -------------------- | id | int | | email | varchar | -------------------- id是该表的主键列。 该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。 删除 所有重复的电…

深入学习 Redis - 深挖经典数据类型之 string

目录 前言 一、string 类型 1.1、操作命令 set / get &#xff08;设置 / 获取&#xff09; mset / mget&#xff08;批量 > 设置 / 获取&#xff09; setnx / setex / psetex &#xff08;设置时指定不同方式&#xff09; incr / incrby / decr / decrby/ incrbyfloat…

深度学习——CNN卷积神经网络

基本概念 概述 卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;是一种深度学习中常用于处理具有网格结构数据的神经网络模型。它在计算机视觉领域广泛应用于图像分类、目标检测、图像生成等任务。 核心思想 CNN 的核心思想是通过利用局部…

线程池学习(五)线程工厂、线程池工厂

Executors 定义的Executor, ExecutorService, ScheduledExecutorService, ThreadFactory和Callable类的工厂和实用程序方法&#xff0c;我们称为线程池工厂。ThreadFactory 为定制化创建新线程的对象,我们称为线程工厂 前面几期的学习中&#xff0c;我已经初步会使用线程池了&…

C++第三讲

思维导图 手动封装一个顺序栈类&#xff08;数据元素为整形&#xff09;&#xff0c;要求私有成员属性&#xff1a;堆区空间的指针&#xff0c;用于存放数据&#xff0c;和一个指向栈顶元素的变量 /* ---------------------------------author&#xff1a;YoungZorncreated on…

【全方位解析】如何写好技术文章

前言 为何而写 技术成长&#xff1a;相对于庞大的计算机领域的知识体系&#xff0c;人的记忆还是太有限了&#xff0c;而且随着年龄的增大&#xff0c;记忆同样也会逐渐衰退&#xff0c;正如俗话所说“好记性不如烂笔头”。并且在分享博客的过程中&#xff0c;我们也可以和大…

React初学者需要的库从哪里下载?

在react官网下载react.js的方法介绍 1、访问react的github官方页面 访问地址为&#xff1a;Downloads | Reacthttps://react-cn.github.io/react/downloads.html 2、点击Download页面中的"Download Starter Kit"按钮&#xff0c;进行下载 学react的时候用到了babe…

若依cloud(RuoYi-Cloud)新增业务模块和功能模块增删改查演示

前言 看了几篇文章感觉都不太满意&#xff0c;索性自己来写一篇。 一、后端 后端新建业务模块流程大致如下&#xff1a; 1、后端新建一个&#xff08;在ruoyi-module模块下&#xff09;业务模块&#xff0c;仿照已有的模块将此模块配置好&#xff0c;例如仿照系统模块&…

数据可视化揭示人口趋势:从数字到图像的转变

人口是一个关乎我们生活的重要话题&#xff0c;而数据可视化技术为我们提供了一种全新的方式来理解和解读人口变化的趋势。通过将大量的人口数据转化为直观的图表和图像&#xff0c;数据可视化帮助我们更好地观察、分析和解释人类发展的重要特征。 数据可视化揭示人口趋势的第一…

自定义实现list及其功能

#pragma once #include <iostream> #include <assert.h> using namespace std;namespace test {//******************************设置结点******************************template<class T>struct list_node{T _data;list_node<T>* _next;list_node&l…

每天一道C语言编程练习(5):尼科彻斯定理

题目描述 验证尼科彻斯定理&#xff0c;即&#xff1a;任何一个整数m的立方都可以写成m个连续奇数之和。 输入格式 任一正整数 输出格式 该数的立方分解为一串连续奇数的和 样例输入 13 样例输出 13*13*132197157159161163165167169171173175177179181 代码如下&#…

WebSocket理论和实战

一 WebSocket理论 1.1 什么是http请求 http链接分为短链接、长链接&#xff0c;短链接是每次请求都要三次握手才能发送自己的信息。即每一个request对应一个response。长链接是在一定的期限内保持链接&#xff08;但是是单向的&#xff0c;只能从客户端向服务端发消息&#x…

Linux: cannot read file data

报错&#xff1a; Could not load library libcudnn_cnn_infer.so.8. Error: /home/qc/miniconda3/envs/DNAqc/lib/python3.10/site-packages/torch/lib/libcudnn_cnn_infer.so.8: cannot read file data Please make sure libcudnn_cnn_infer.so.8 is in your library path! A…

IDEA启动tomcat控制台中文乱码问题

IntelliJ IDEA是很多程序员必备且在业界被公认为最好的Java开发工具&#xff0c;有很多小伙伴在安装完IDEA并且tomcat之后&#xff0c;启动tomcat会出现控制台中文乱码问题&#xff0c;如下图所示&#xff1a; 具体解决步骤&#xff1a; 一、修改当前 Web 项目 Tomcat Server…

基于XPopup实现的弹窗效果

基于XPopup实现的弹窗效果&#xff1a; implementation com.github.li-xiaojun:XPopup:2.9.191、底部弹窗(BottomPopupView) class OutlinkDealDialog(context: Context,private val selectClickCallback: ((index: Int) -> Unit)? null, ) : BottomPopupView(context) {…

【岛屿最大面积】BJ某IT厂笔试题

该题在LeetCode上能找到原题&#xff0c;大致意思是&#xff0c;给你一个大小为 m x n 的二进制矩阵 grid 。岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0&…