是否可以禁用查询的缓存?
系统:Linux虚拟主机上的MySQL 4,我可以访问PHPMyAdmin。
感谢
#1 楼
尝试在查询中使用SQL_NO_CACHE(MySQL 5.7)选项。(MySQL 5.6用户单击此处)
例如。
SELECT SQL_NO_CACHE * FROM TABLE
这将停止MySQL缓存结果,但是请注意,其他操作系统和磁盘缓存也可能会影响性能。这些很难解决。
#2 楼
另一个仅影响当前连接的替代方法:SET SESSION query_cache_type=0;
评论
我的错。我正在查看的是query_cache_size,而不是query_cache_type。我混淆了您和SeniorDev的答案。
–迈克
13年4月23日在3:55
#3 楼
对当前日期/时间的任何引用将禁用该选择的查询缓存:.mysql.com / tech-resources / articles / mysql-query-cache.html
#4 楼
还有一个配置选项:query_cache_size = 0要在服务器启动时禁用查询缓存,请将query_cache_size系统变量设置为0。通过禁用查询缓存代码,没有明显的开销。如果从源代码构建MySQL,则可以通过使用--without-query-cache选项调用configure来完全从服务器中排除查询缓存功能。请参见http:// dev。 mysql.com/doc/refman/5.1/zh-CN/query-cache.html
#5 楼
您还可以运行follow命令重置查询缓存。评论
可能这是矫over过正...理想情况下,您只希望MySQL暂时忽略缓存。
–BMiner
2011年9月21日在16:24
您还需要特殊权限。
–埃里克·罗伯逊(Erick Robertson)
2014年2月3日,18:55
#6 楼
SELECT SQL_NO_CACHE * FROM TABLE
方法的一个问题是,它似乎只能阻止查询的结果被缓存。但是,如果要查询正在与要测试的查询一起使用的数据库,则其他客户端可能会缓存您的查询,从而影响您的结果。我正在继续研究此问题的方法,如果发现一个问题,将对其进行编辑。
评论
但是,如果您的缓存被其他人填满了,您会感到速度很快。但有时不是。
– karatedog
2015年9月4日在9:38
#7 楼
我会使用以下内容:SHOW VARIABLES LIKE 'query_cache_type';
SET SESSION query_cache_type = OFF;
SHOW VARIABLES LIKE 'query_cache_type';
#8 楼
在查询中使用用户定义的变量会使查询的结果不可缓存。我发现它比使用SQL_NO_CACHE
更好。但是您应该将变量放置在变量设置不会严重影响性能的地方:SELECT t.*
FROM thetable t, (SELECT @a:=NULL) as init;
评论
“我发现它是比使用SQL_NO_CACHE更好的指标。”为何如此?似乎您需要一个非常有力的案例来对显式关键字使用晦涩的破解,除非显式关键字没有按照其要求进行操作。
–Air
2014年6月2日15:53
@Air我发现此解决方案也比SQL_NO_CACHE更好地工作。 SQL_NO_CACHE第一次运行该查询,但是此后它不再起作用。我假设这是由于其他缓存机制引起的。我认为这样做效果更好,因为依赖于变量的搜索不能被任何层或机制缓存-至少,这是我的最佳猜测。
– Klik
15年4月16日在13:36
#9 楼
如果要禁用查询缓存,请在mysql配置文件中将'query_cache_size'设置为0。如果将其设置为0,则mysql将不使用查询缓存。#10 楼
虽然某些答案是好的,但有一个主要警告。可以防止mysql查询被缓存,但是它不会阻止您的底层OS将磁盘访问磁盘缓存到内存中。对于某些查询而言,这可能是一个严重的减慢,尤其是当它们需要从旋转磁盘中提取数据时。 ,很可能不会将其从磁盘拉到磁盘/内存缓存中。
评论
文献资料
–萨尔曼·冯·阿巴斯
11-10-23在20:38
关于mysql查询缓存的一篇不错的文章。如何设置并查看运行中的缓存!值得一读。 databasejournal.com/features/mysql/article.php/3110171/…
– Adrian P.
2014年2月20日在18:03
在尝试提高性能之前,请尝试重新启动mysql服务器。可能某些过程正在影响一切。它发生在我身上。尽管此评论与问题没有直接关系,但可以为许多人提供帮助。
–德拉萨维亚
2014-12-09 16:15
这可以阻止它缓存结果,但是也可以阻止它使用缓存吗?
–布雷特
15年3月18日在15:53
@Brett看到SalmanPK在11年前的评论方式。该文档页面实际上是4个句子,可直接回答您的问题。如果将来要删除该页面:“它既不检查查询缓存以查看结果是否已经缓存,也不缓存查询结果。”
–莫里斯
15年7月15日在19:02