首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我能告诉MySQL要缓存什么吗?

问我能告诉MySQL要缓存什么吗?
EN

Database Administration用户
提问于 2015-03-20 19:39:46
回答 2查看 1.6K关注 0票数 3

很简单的问题:

假设我有一个我知道经常使用的特定查询,我可以告诉MySQL总是“自动”缓存它.也就是说,一旦缓存的查询结果被刷新,mysqld立即再次运行该查询,以便为下一个用户准备好缓存的数据?

或者反过来:我能告诉MySQL不要缓存特定的查询吗?其他缓存选项呢,不一定与查询相关?

我在网上搜索了一下,但是找不到任何相关的东西。

EN

回答 2

Database Administration用户

回答已采纳

发布于 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,可以将查询设置为会话的默认设置。

代码语言:javascript
复制
SET query_cache_type = 'DEMAND';

或

代码语言:javascript
复制
SET query_cache_type = 2;

之后,您必须使用SELECT SQL_CACHE来缓存SELECT。

票数 5
EN

Database Administration用户

发布于 2015-03-20 19:50:19

你不能。MySQL没有这种机制。查询缓存被误解的常见特性

  1. 只适用于选择查询。
  2. 查询应该是完全相同的
  3. 不可能看到查询缓存内容。

我们只能优化参数

代码语言:javascript
复制
query_cache_limit = 150K
query_cache_size = 512M
query_cache_type = 1

相反,我们应该在频繁更新和插入的地方禁用查询缓存,因为一旦表中有任何更改,就会取消查询缓存下的所有选择。在这些情况下,禁用查询缓存可以提高性能。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/95838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档