很简单的问题:
假设我有一个我知道经常使用的特定查询,我可以告诉MySQL总是“自动”缓存它.也就是说,一旦缓存的查询结果被刷新,mysqld立即再次运行该查询,以便为下一个用户准备好缓存的数据?
或者反过来:我能告诉MySQL不要缓存特定的查询吗?其他缓存选项呢,不一定与查询相关?
我在网上搜索了一下,但是找不到任何相关的东西。
发布于 2015-03-20 19:50:26
MySQL文档有SQL选项:
可以在SELECT语句中指定两个与查询缓存相关的选项: SQL_CACHE,如果查询结果是可缓存的,查询结果是缓存的,并且query_cache_type系统变量的值是ON或DEMAND。SQL_NO_CACHE服务器不使用查询缓存。它既不检查查询缓存以查看结果是否已被缓存,也不缓存查询结果。(由于解析器中的限制,空格字符必须在SQL_NO_CACHE关键字之前并跟随;非空格(例如换行符)会导致服务器检查查询缓存,以查看结果是否已被缓存。)示例:选择SQL_CACHE id,名称来自客户;选择SQL_NO_CACHE id,从客户中选择名称;
通过设置SQL_NO_CACHE,可以将查询设置为会话的默认设置。
SET query_cache_type = 'DEMAND';或
SET query_cache_type = 2;之后,您必须使用SELECT SQL_CACHE来缓存SELECT。
发布于 2015-03-20 19:50:19
你不能。MySQL没有这种机制。查询缓存被误解的常见特性
我们只能优化参数
query_cache_limit = 150K
query_cache_size = 512M
query_cache_type = 1相反,我们应该在频繁更新和插入的地方禁用查询缓存,因为一旦表中有任何更改,就会取消查询缓存下的所有选择。在这些情况下,禁用查询缓存可以提高性能。
https://dba.stackexchange.com/questions/95838
复制相似问题