假设内存足够,
MySQL如何确定是否从缓存中获取或重新查询?
答案1
据我所知,当表发生变化(插入、更新、删除等)时,mysql 的缓存会自动过期
mysql 通常会根据 query_cache_limit 和大小立即缓存它,默认的 query_cache_limit 是 1M,因此如果单个查询变得更大,那么它将不会缓存,除非您更改它。
您必须确保您的查询也是平等的,因为它考虑了区分大小写的查询。
除此之外,您还可以使用以下命令来监控它:
SHOW STATUS LIKE '%qcache%';
例如创建一个包含一些条目的表并运行:
SELECT id,name FROM my_table WHERE id > '2'; SHOW STATUS LIKE '%qcache%';
您将注意到缓存的查询数量增加了 1,现在再次运行相同的选择,您将看到 mysql 已经使用缓存,并且结果将更快出现。
附加信息
首先,您必须确保您已拥有query-cache-type = 1
my.cnf 或 my.ini,具体取决于操作系统/安装。
您可以从 mysql 运行以下命令来验证其状态:
SHOW VARIABLES LIKE '%query_cache%';
列出数据时,您将看到查询缓存大小,如果将其设置为 0,则表示您的查询缓存被禁用,此变量决定用于查询缓存的内存(以字节为单位)。
因此,就像您对 query-cache-type 所做的那样,将以下内容添加到您的 my.cnf 或 my.ini 中:
query-cache-size = 40M