检查上次查询中是不是使用了缓冲区
Posted
技术标签:
【中文标题】检查上次查询中是不是使用了缓冲区【英文标题】:Check if buffer was used in last query检查上次查询中是否使用了缓冲区 【发布时间】:2018-04-15 23:38:01 【问题描述】:我想知道是否有任何query
/config
/trick
/etc 来了解innodb_buffer
是否用于获取last query
的结果。
PS:这是在性能调整的背景下,我不想让事情保持最佳猜测,所以如果使用buffer_pool
或使用正常的数据库查找,有什么方法可以提供具体证据。
PPS:我已经搜索过相关术语,例如
检查缓冲区是否被mysql使用 Innodb 缓冲区使用检查 验证结果是否从缓冲池或数据存储中加载。等等。【问题讨论】:
dba.stackexchange.com/questions/171/… 【参考方案1】:注意GLOBAL STATUS
值Innodb%
的变化。 Handler%
同上。
我喜欢这样做是为了弄清楚查询中发生了什么:
FLUSH STATUS;
SELECT ...
SHOW SESSION STATUS LIKE 'Handler%';
它准确地告诉我有多少行被触摸了多少次。以及是否正在使用临时表以及它有多大(以行为单位)。等等。
在 InnoDB 查询中不会“使用”buffer_pool 的唯一方法是使用查询缓存。
您可能要钓的不是buffer_pool是否“已使用”,而是是否必须从磁盘中获取一个块才能使用它?
【讨论】:
以上是关于检查上次查询中是不是使用了缓冲区的主要内容,如果未能解决你的问题,请参考以下文章