mysql - 检查上次查询是否使用了缓冲区

标签 mysql query-optimization innodb micro-optimization

我想知道是否有任何query/config/trick/etc 来知道innodb_buffer用于获取上次查询的结果。

PS:这是在性能调整的背景下,我不想让事情保持最佳猜测,所以有没有办法提供具体的证据,如果 buffer_pool 被使用或正常使用了数据库查找。

PPS:我已经搜索过类似的相关术语

  • 检查缓冲区是否被mysql使用
  • Innodb 缓冲区使用检查
  • 验证结果是否从缓冲池或数据存储中加载。等等。

最佳答案

注意 Innodb%GLOBAL STATUS 值的变化。 Handler% 也是如此。

我喜欢这样做来弄清楚查询中发生了什么:

 FLUSH STATUS;
 SELECT ...
 SHOW SESSION STATUS LIKE 'Handler%';

它准确地告诉我有多少行被触摸了多少次。以及是否正在使用临时表以及它有多大(以行为单位)。等等

在 InnoDB 查询中不“使用”buffer_pool 的唯一方法是使用查询缓存。

可能您正在寻找的不是 buffer_pool 是否被“使用”,而是在使用之前是否必须从磁盘中获取 block ?

关于mysql - 检查上次查询是否使用了缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49847819/

相关文章:

MySQL 枚举字段按索引插入

mysql - 连接 2 个具有不同值的表

mysql - 错误 1067 : The process terminated unexpectedly MYSQL, Windows Server 2008 R2

mysql - mysql中Limit的使用

mysql - 什么是最积极的 FLUSH/RESET mysql 命令来清除查询缓存(以及其他任何...)

mysql - MySQL View 的优化

performance - UNION ALL 耗时太长

mysql - 优化 MariaDB 中的 1 次 SQL 更新语句

java - Java Spring 中不同的 MySQL 引擎

mysql - 需要有关 Mysql 截断表的帮助