gpt4 book ai didi

php - 何时使用 SQL_NO_CACHE

转载 作者:IT老高 更新时间:2023-10-28 23:53:00 26 4
gpt4 key购买 nike

我正在检查我的查询,我一直在阅读有关如何在 SELECT 查询中使用 SQL_NO_CACHE 的文章。这让我感到困惑,因为最后每篇文章对何时使用它都有不同的结论。我读过的一篇博客说,如果您有相同的查询并且是独一无二的,则应该使用它。在另一个博客上,我读到当您必须提取永不更改的信息时应该使用它。

有人可以解释一下什么时候使用这个是好的做法吗?我知道之前有人问过这个问题,但阅读很多文章都没有帮助,尤其是当人们说在不同情况下使用这种方法时。我做了一些理论情况,有人可以告诉我使用 SQL_NO_CACHE 是否有益。谢谢您,对于重复的问题,我深表歉意。我真的很困惑。

  1. 假设一个网站存储其配置(即站点名称、站点描述、关键字),并且在每个页面上发出查询请求以提取每个页面所需的此信息。

  2. 您在登录检查期间选择一个 userID,查询仅在登录检查过程中运行。

  3. 您从表 a 中选择了一些数据以更新表 b 中的字段,您应该在表中使用 SQL_NO_CACHE选择表 a?

谢谢。

最佳答案

SQL_NO_CACHE


只需在 SELECT 语句的 SELECT 部分之后和字段列表之前添加 SQL_NO_CACHE。下面的第一个查询将使用查询缓存,如果它被启用并且查询被缓存:

SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms

下面的第二个查询将不使用查询缓存:

SELECT SQL_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time

这在对查询进行基准测试时特别有用;如果启用了查询缓存,虽然第一个查询可能需要一些时间,但第二个和后续查询几乎是即时的。通过使用 SQL_NO_CACHE,您可以确保不使用查询缓存,并且可以安全地比较结果时间。SQL_NO_CACHE 提示为特定查询关闭 MySQL 的内置查询缓存机制。您可以通过对高度动态的查询(例如关键字搜索或仅每晚运行的报告)使用此提示来帮助 MySQL 提高查询缓存的效率。确保查询缓存已打开,否则不需要此命令。

什么是 SQL_CACHE 和 SQL_NO_CACHE?

SQL_CACHE 和 SQL_NO_CACHE 选项影响查询缓存中查询结果的缓存。 SQL_CACHE 告诉 MySQL 将结果存储在查询缓存中,如果它是可缓存的并且 query_cache_type 系统变量的值为 2 或 DEMAND。使用 SQL_NO_CACHE,服务器不使用查询缓存。它既不检查查询缓存以查看结果是否已被缓存,也不缓存查询结果。 (由于解析器的限制,SQL_NO_CACHE 关键字前后必须有一个空格字符;换行符等非空格字符会导致服务器检查查询缓存以查看结果是否已被缓存。)

根据我的意见,如果启用“缓存”并且数据库中的数据是动态更新的,则可以使用 NO_CACHE,即不能依赖数据库数据缓存,例如:存储用户密码哈希我们不能依赖缓存,因为经常有可能更改数据

有用场景的更新


1) 强制不使用缓存来测试查询速度

关于php - 何时使用 SQL_NO_CACHE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18777975/

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