我的问题是,如果我运行两次查询,第二个查询的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计算吗?
我可以在所有具有摘要列的表中看到此行为。例如。
digest
和digest_text
)digest
和digest_text
)count_star
列没有增加)我的猜测是,如果查询不变,则不会重新计算这些值。另外,如果我使用count_star
子句进行查询,则仅在该子句发生更改时(例如,从where
更改为where foo='bar'
时才计算摘要,如果不变则不计算摘要。
所以我的问题是:是否有一些设置(我没有通过google或docs找到这些设置)来打开每个语句的任何表中的摘要计算?
答案 0 :(得分:0)
查询缓存是否已打开? QC很早就进行摘要,然后如果看到相同的摘要,则返回先前返回的结果集。也就是说,避免执行语句。