共享的特性在大多数(如果不是全部的话)数据库,他们像Oracle这样的传统关系数据库,MySQL和PostgreSQL或某种NoSQL-style像MongoDB数据库,使用缓存机制保持(副本)的一部分数据在内存中。

我在上一篇谈过这个最重要的MySQL设置,背后的原因很简单:访问数据从内存仍然比从磁盘检索数据快许多倍。如果一千个用户试图访问一个给定的数据的同时,需要从磁盘取为每个请求将是非常低效的。

注意,缓存结构不一定是和你一样大数据集工作。在大多数情况下,如果它是足够大的存储“热”数据集的一部分,或最经常访问的数据,这是一个胜利。考虑从上面的例子中,即使这一点用户所请求的数据在内存中没有找到,需要从磁盘检索,缓慢的操作必须执行一次批处理的请求。

所以,你怎么知道你的热数据是在内存中?你怎么知道如果你的MySQL数据库缓存操作有效吗?

通过比较数据页的数量(“比特的数据”)是直接从内存页面的数据量必须从磁盘获取:更多的数据库需要从磁盘读取完成查询,缓存结构操作的效率越低。注意,实现查询造成这一复习/比必要的处理更多的数据,加载到缓存结构,通常把热数据。

发现比并不容易;理想情况下,数据库应该公开这些指标。MySQL。其主要数据缓存结构标准InnoDB存储引擎缓冲池。两个状态变量(或地位计数器在这种情况下),使缓冲池效率(引用MySQL手册):

  • Innodb_buffer_pool_read_requests:逻辑读请求的数量。
  • Innodb_buffer_pool_reads:InnoDB的逻辑读数量不能满足从缓冲池,并直接从磁盘读取。

多年来,MySQL dba监视工具一直在跟踪这些指标甚至捕捉他们在关键时刻手动。raybet雷竞技竞猜在线官网两个工具的雷竞技下载官网Percona工具包可以帮助:

  • pt-stalk可用于捕获状态变量(在其他服务器性能分析的重要指标)。例如:

  • pt-mext可以用来绘制状态变量的集合被pt-stalk在某种程度上,突显出一个集合的状态变量随时间变化的样本。例如:

然后:

约,它显示了平均89%的页面读取缓冲池,或11%的页面从磁盘获取资源。

有一个简单的方法来获得这些信息吗?如果你有raybetapp官方下载 。实际上,曾经有一个图表来显示这个PMM 1节。它从在PMM2已经被移除,所以我创建了一个特性要求把它带回来:https://jira.雷竞技下载官网percona.com/browse/pmm - 11923

一件事没有做好当时混合读请求写请求,然后有三分之一的数据点从磁盘读取,如:

Innodb_buffer_pool_reads是一个百分比的Innodb_buffer_pool_read_requests。因此,最好是由一个表示酒吧风格的图,脱离写请求:

我应该追求100%的命中率呢?

第二个原因我们有,图从PMM是为了避免传递错误的印象:你应该考虑增加缓冲池大小,如果你看到任何从磁盘读取出现,目的是达到100%命中率。

记住,你想要缓冲池大得足以容纳你所有的热数据——不是由于硬度查询页面加载。这些需要追踪和固定,PMM也可以帮助你这样做。

比较从磁盘读取从上面的CPU使用情况图节点汇总指示板,我们可以看到一段被从磁盘读取,当页面iowait是非常高的:

MySQL数据缓存”width=

然后我们可以检查MySQL处理程序图在MySQL实例的总结仪表板寻找可能的索引扫描(read_next)和全表扫描(read_rnd_next),

甚至MySQL临时对象仪表盘上相同的图搜索磁盘上的临时表。但是我们会发现的地方我们正在寻找查询,查询我们需要改进,在查询分析(QAN)仪表盘——一天的主题!


我坚信有这个图的一个重要地方“数据缓存效率”PMM的MySQL。它不应该看在一个孤立的方式,和我们的目标不应该了绿色图。不过,我们可以得到重要的信息服务器的效率和工作负载通过瞥一眼这个图表。

雷竞技下载官网Praybet雷竞技竞猜在线官网ercona监视和管理是一种优秀的开源数据库监视解决方案。它能帮助你降低复杂性、优化性能和改善关键业务数据库的安全环境中,无论他们在那里部署。

raybetapp官方下载

订阅
通知的
客人”src=