gpt4 book ai didi

mysql - MySQL查询缓存

转载 作者:行者123 更新时间:2023-11-29 19:02:43 25 4
gpt4 key购买 nike

我尝试使用查询缓存。缓存应该将查询与结果一起存储。所以我在 my.cnf 中启用了查询缓存。持续时间表明它有效:

RESET QUERY CACHE;
SELECT * FROM t_data GROUP BY col2; //duration: 0.034sec
SELECT * FROM t_data GROUP BY col2; //duration: 0.015sec
SELECT * FROM t_data GROUP BY col2; //duration: 0.014sec

实际上一切都很好,但之后我在此查询上使用了 EXPLAIN。这就是结果:

id |  select_type | table  | type  |  possible_keys  | key  | key_len | ref | rows  | Extra

1 | SIMPLE | t_data | ALL | | | | | 921 | Usi..

那么为什么我在列行中得到 921 呢?结果只有 15 行。如果认为MySQL在缓存中获取了该查询所连接的表。为什么MySQL又要全表查找呢?这是我的第一篇文章。我希望一切都是正确的!

最佳答案

execution plan对MySQL如何执行查询的解释(重点是我的)。换句话说,它是询问 MySQL 如何处理给定 SQL 查询以获取所请求信息的结果。因此,它通常可以很好地估计查询的速度,但并不意味着实际的查询执行。此外,它也不显示实际的行号,主要是因为它通常不知道真实的数字,并且在不实际运行查询的情况下不可能获得它。

另一边,MySQL Query Cache是一个完全避免查询执行的功能:

The query cache stores the text of a SELECT statement together with the corresponding result that was sent to the client. If an identical statement is received later, the server retrieves the results from the query cache rather than parsing and executing the statement again.

您在实际查询执行时获得的指标称为 profiling ;这是完全不同的事情。一些 DBMS 提供了相当好的每查询分析功能,据我所知,MySQL 只有一些通用数据。

关于mysql - MySQL查询缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43735980/

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