gpt4 book ai didi

即使使用 SQL_NO_CACHE,第二次运行 Mysql 查询也要快得多

转载 作者:行者123 更新时间:2023-11-29 02:36:04 27 4
gpt4 key购买 nike

我正在尝试分析两个执行相同操作的不同查询,以找出哪个查询更快。为了进行测试,我已将 SQL_NO_CACHE 放入两个查询中,以防止查询缓存弄乱时间。

查询 A 始终为 50 毫秒。查询 B 第一次运行时为 100 毫秒,如果我在不久之后第二次运行它,则为 10 毫秒。

为什么第二次查询 B 更快?查询缓存不应该加速查询。会不会是查询 B 的第一次运行将数据从磁盘加载到内存中,以便第二个查询在内存中运行并且速度更快?有没有办法测试这个?在运行查询 B 之前,我尝试通过从表中执行 select * 来亲自测试它,但它仍然表现出相同的行为。 SQL_NO_CACHE 可能无法禁用查询缓存吗?

查询 B 看起来像这样:SELECT SQL_NO_CACHE foo,bar FROM table1 LEFT JOIN table2 ON table1.foo=table2.foo WHERE bar=1

最佳答案

根据您使用的存储引擎,是的,它很可能是从数据缓存而不是查询缓存加载的。

MyISAM 不提供数据的存储引擎级缓存,只缓存索引。但是,操作系统通常会从自己的缓存中提供数据,这很可能会加快您的查询执行速度。

您可以尝试在真实场景中对查询进行基准测试,只需在每次执行时(连同执行时间)将特定查询记录到数据库中。

关于即使使用 SQL_NO_CACHE,第二次运行 Mysql 查询也要快得多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4962155/

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