iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL InnoDB内存压力判断以及存在的疑问是怎样的
  • 648
分享到

MySQL InnoDB内存压力判断以及存在的疑问是怎样的

2024-04-02 19:04:59 648人浏览 八月长安
摘要

本篇文章为大家展示了Mysql InnoDB内存压力判断以及存在的疑问是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。与其他数据一样,内存对数据库的性能有着至

本篇文章为大家展示了Mysql InnoDB内存压力判断以及存在的疑问是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

与其他数据一样,内存对数据库的性能有着至关重要的影响,mysql  InnoDB也一样通过内存来缓存数据,在访问数据的时候通过访问内存中缓存的数据来提高数据的访问效率。

Mysql中通过show variables like  'Innodb_buffer_pool%'命令或者直接访问perfORMance_schema.global_status系统表,

可以得到数据库在运行过程中对内存或者磁盘的读取情况,根据这个数据,可以计算出来InnoDB在对数据读取过程中发生的内存或者物理磁盘读写情况,也即缓存***率。

对于“缓存***率”,在SQL Server中也有这一概念,而且含义几乎是一致的,

不过SQL Server中通过Buffer Cache hit ratio性能计数器或者  sys.dm_os_performance_counters计算出来的Buffer Cache hit ratio并不能直接反应内存压力情况,

原因归结为SQL Server在计算Buffer Cache hit  ratio的时候,是包含了预读这部分数据的(把预读部分的page也算做缓存***),

对于MySQL的InnoDB引擎,有同样类似的逻辑读,物理读与预读的概念,因此在计算MySQL缓存***率的时候,需要靠预读这部分数据的信息。

MySQL InnoDB内存压力判断以及存在的疑问是怎样的

在判定内存压力的时候,关注performance_schema.global_status中与InnoDB读写相关的参数有如下几个,这里的次数也就是MySQL存储的默认page大小,

page大小同样可以通过performance_schema.global_status 来获取,单位是字节数,默认情况下页大小是16kb

MySQL InnoDB内存压力判断以及存在的疑问是怎样的

Innodb_buffer_pool_read_requests:································从缓冲池中读取的页的次数

Innodb_buffer_pool_reads:············································从物理此案读取页的次数

Innodb_buffer_pool_reads_ahead:··································预读的次数

Innodb_buffer_pool_read_ahead_evicted:························预读的页,但是没有被预读就从缓冲池中被替换的页的数量,一般用来判断预读的效率

Innodb_data_read:·······················································读取的字节数

Innodb_data_reads:······················································读取的次数

这些参数是MySQL服务器启动以来累计增加的,如果重启MySQL服务器,参数将清零从新开始累计增加。

缓冲***率理论上就是:缓冲读取次数/(缓冲读取次数+物理读取次数+预读次数)

也即:Innodb_buffer_pool_read_requests/(Innodb_buffer_pool_read_requests+Innodb_buffer_pool_reads+Innodb_buffer_pool_reads_ahead)

个人认为,这个值的实时计算结果参考意义并不大,如果直接根据查询出来的值进行计算,当前计算值反馈的是自服务启动以来的平均值。

在衡量实际压力的时候,因为数据的压力是阶段性的,需要在一定的时间段之内,按照某一个频率收集这一段时间之内,

每个时间段之内发生的逻辑读次数,物理读次数,预读次数,分别计算每个时间间隔之内的缓存***率,才具备参考意义。

可能在业务繁忙期,内存压力较大,而在空闲期压力较小,计算出来的平均值意义并不大。

另外,缓存***率只能从一个方面反映内存的压力情况,并没有一个绝对值去判断压力大还是不大。

究竟缓存***率有多高,个人认为没有一个定数,非要是99%或者某个值?主要是看与基线相比其波动情况,另外取决于具体的具体的环境。

比如对于高速存储,根据其他数据库的长期观察,由于物理存储经过优化或者本身就比较强,即便是存在一定程度的物理读,物理IO延迟不是非常长的情况下,都是可以接受的。

同时,内存压力情况也不仅仅是说“内存不足够大”,尤其是MySQL,受多种配置的影响,包括各种内存分配的大小,都会存在影响缓存***率的情况。

另外有两个实际问题,

1,MySQL在测试的时候,如何清空表(或者特定表)的缓存的数据?

2,在(重启MySQL服务)强制清空缓存之后,查询Innodb_buffer_pool_read_requests和Innodb_buffer_pool_reads,

然后查询某个物理表,再次查询Innodb_buffer_pool_read_requests和Innodb_buffer_pool_reads,发现Innodb_buffer_pool_read_requests的增幅大于Innodb_buffer_pool_reads

重启完之后,***次查询一张物理表的前后,如下截图看到的是物理读增加了2,逻辑读增加了5(测试表上没有任何索引)

MySQL InnoDB内存压力判断以及存在的疑问是怎样的

继续,再次对测试的物理表进行一次查询,发现物理读没有增加(可以理解为数据被缓存了),逻辑读增加了4(当前情况多次测试依旧是该规律),

也就是说2次物理读缓存的数据,逻辑读每次都增加4?不太理解,这个参数具体是怎么计算出来的(很明显这里不涉及预读)。

MySQL InnoDB内存压力判断以及存在的疑问是怎样的

或者说:MySQL缓存***率的计算,并非这个公式:Innodb_buffer_pool_read_requests/(Innodb_buffer_pool_read_requests+Innodb_buffer_pool_reads+Innodb_buffer_pool_reads_ahead)?

不由得想起了当时对于sqlserver缓存***率的理解,当时所有的中文资料上都说是95%什么的,中文资料基本上没有正确解读这个参数的,

实际在观察服务器参数的时候,发现实际情况跟理论根本不搭嘎,后来英文资料才发现不是这么回事。

上述内容就是MySQL InnoDB内存压力判断以及存在的疑问是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL InnoDB内存压力判断以及存在的疑问是怎样的

本文链接: https://www.lsjlt.com/news/67598.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL InnoDB内存压力判断以及存在的疑问是怎样的
    本篇文章为大家展示了MySQL InnoDB内存压力判断以及存在的疑问是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。与其他数据一样,内存对数据库的性能有着至...
    99+
    2024-04-02
  • 如何理解MySQL数据库Innodb内存结构以及怎样使用内存的
    如何理解MySQL数据库Innodb内存结构以及怎样使用内存的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。概述很多朋友可能会有许多关于I...
    99+
    2024-04-02
  • 怎么判断数据库表是否存在以及修改表名的方法
    本篇内容主要讲解“怎么判断数据库表是否存在以及修改表名的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么判断数据库表是否存在以及修改表名的方法”吧!一、判...
    99+
    2024-04-02
  • Linux IO内存的访问是怎样的
    本篇内容主要讲解“Linux IO内存的访问是怎样的”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux IO内存的访问是怎样的”吧!IO内存访问流程我们知道,为了管理最重要的系统资源并让物...
    99+
    2023-06-16
  • python中hash操作的key是否存在的判断问题.
    本篇文章为大家展示了python中hash操作的key是否存在的判断问题.,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 >>> c="abcdeabccqq&...
    99+
    2023-06-04
  • Linux的内存中Swap和Cache以及Buffer的介绍是怎样的
    Linux的内存中Swap和Cache以及Buffer的介绍是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 total:总内存大小。 used:已经...
    99+
    2023-06-15
  • MSSQL内存架构及管理是怎样的
    本篇文章给大家分享的是有关MSSQL内存架构及管理是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 1.  MSS...
    99+
    2024-04-02
  • php怎么判断数组的元素是否存在
    在PHP中,判断数组元素是否存在的方法非常灵活,可以使用多种方式进行判断。本文将为你介绍PHP中判断数组的元素存在的五种常用方式。使用array_key_exists()函数array_key_exists()函数是PHP中用于检查数组中是...
    99+
    2023-05-14
  • php怎么判断文件是否存在的函数
    在PHP中,可以使用file_exists()函数来判断文件是否存在。这个函数接受一个文件路径作为参数,并返回一个布尔值,表示文件是...
    99+
    2023-08-26
    php
  • Mysql5.7的json存储以及sys schema是怎么样的
    今天就跟大家聊聊有关Mysql5.7的json存储以及sys schema是怎么样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。重点介绍新版本对J...
    99+
    2024-04-02
  • C语言数据在内存中是怎样存储的
    这篇文章主要介绍“C语言数据在内存中是怎样存储的”,在日常操作中,相信很多人在C语言数据在内存中是怎样存储的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C语言数据在内存中是怎样存储的”的疑惑有所帮助!接下来...
    99+
    2023-06-08
  • JVM 发生内存溢出的原因以及解决办法是怎样的
    JVM 发生内存溢出的原因以及解决办法是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1. Java 堆空间发生频率:5颗星造成原因无法在 Java 堆中...
    99+
    2023-06-02
  • MySQL double write存在是怎样的意义
    MySQL double write存在是怎样的意义,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。背景:MySQL默认每个pa...
    99+
    2024-04-02
  • mysql存入emoji表情的问题是怎么样的
    本篇文章为大家展示了mysql存入emoji表情的问题是怎么样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 1.测试插入脚本...
    99+
    2024-04-02
  • mysql复制和内存引擎的表是怎么样的
    mysql复制和内存引擎的表是怎么样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。当主服务器关闭并重新启动时,其内存表将变为空。要将此效...
    99+
    2024-04-02
  • 怎么解决Mysql数据库提示innodb表不存在的问题
    本篇内容主要讲解“怎么解决Mysql数据库提示innodb表不存在的问题”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么解决Mysql数据库提示innodb表...
    99+
    2024-04-02
  • MYSQL的CHAR和VARCHAR注意事项以及binary和varbinary存储方式是怎样的
    MYSQL的CHAR和VARCHAR注意事项以及binary和varbinary存储方式是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方...
    99+
    2024-04-02
  • Linux动态内存配置与及时备份是怎样的
    Linux动态内存配置与及时备份是怎样的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Linux动态内存配置动态内存配置是一项在 Hyper-V 中可选择使用的技术之一,如...
    99+
    2023-06-16
  • HTML5 本地存储中WebStorage使用以及实验是怎样的
    这期内容当中小编将会给大家带来有关HTML5 本地存储中WebStorage使用以及实验是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 ...
    99+
    2024-04-02
  • 怎么在Linux系统的服务器上使用Memtester进行内存压力测试
    本篇内容介绍了“怎么在Linux系统的服务器上使用Memtester进行内存压力测试”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2023-06-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作