gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 17:14:28 24 4
gpt4 key购买 nike

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

SELECT * FROM state;

events_statements_history_long 中的输出如下所示:

SQL_TEXT:从状态中选择*
摘要:f9842414749bbcda76ef05940ebc2f84
DIGEST_TEXT:从状态中选择*
LOCK_TIME:372000000

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

SQL_TEXT:从状态中选择*
摘要:空
DIGEST_TEXT:空
LOCK_TIME:0

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

  • events_statements_history_long(digest 列和 digest_text)
  • events_statements_history(digest 列和 digest_text)
  • objects_summary_global_by_type(count_star 列不增加)
  • events_statements_summary_by_digest(count_star 列不增加)

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

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

最佳答案

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

关于mysql - 如果相同的查询,则不会计算 MariaDB 性能架构摘要,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51708420/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com