如果查询相同,则不计算MariaDB性能架构摘要

时间:2018-08-06 13:07:52

标签: mysql mariadb

我的问题是,如果我运行两次查询,第二个查询的performance_schema中不会再次计算Digest和Digest_text。
示例:

SELECT * FROM state;

events_statements_history_long中的输出如下:

SQL_TEXT:SELECT * FROM状态
数据摘要:f9842414749bbcda76ef05940ebc2f84
DIGEST_TEXT:SELECT * FROM状态
LOCK_TIME:372000000

如果我再次运行查询,events_statements_history_long看起来像:

SQL_TEXT:SELECT * FROM状态
摘录:null
DIGEST_TEXT:空
LOCK_TIME:0

这也很奇怪,第二次尝试时LOCK_TIME的值为0。可能正在进行一些优化,而没有进行DIGEST计算吗?
我可以在所有具有摘要列的表中看到此行为。例如。

  • events_statements_history_long(列digestdigest_text
  • events_statements_history(列digestdigest_text
  • objects_summary_global_by_type({{1}列不增加)
  • events_statements_summary_by_digest(第count_star列没有增加)

我的猜测是,如果查询不变,则不会重新计算这些值。另外,如果我使用count_star子句进行查询,则仅在该子句发生更改时(例如,从where更改为where foo='bar'时才计算摘要,如果不变则不计算摘要。

所以我的问题是:是否有一些设置(我没有通过google或docs找到这些设置)来打开每个语句的任何表中的摘要计算?

1 个答案:

答案 0 :(得分:0)

查询缓存是否已打开? QC很早就进行摘要,然后如果看到相同的摘要,则返回先前返回的结果集。也就是说,避免执行语句。