假设内存够用了,
MySQL如何确定是从caching中获取还是重新查询?
AFAIK mysql会自动过期,当表更改(插入,更新,删除等)
mysql通常会根据query_cache_limit和size的大小马上caching它,默认的query_cache_limit是1M,所以如果单个查询变大,那么除非你改变它,否则它不会caching。
您必须确保您的查询是iquals以及考虑到区分大小写的查询。
除此之外,您可以使用follow命令来监视它:
SHOW STATUS LIKE '%qcache%';
所以例如创build一个包含一些条目的表并运行:
SELECT id,name FROM my_table WHERE id > '2'; SHOW STATUS LIKE '%qcache%';
您会注意到,caching的查询数量增加了1,现在再次运行相同的select,您将看到mysql已经在使用caching,结果将会更快。
附加信息
首先,您必须确保在my.cnf或my.ini中具有query-cache-type = 1 ,具体取决于OS / INSTALLATION。
从mysql你可以运行follow命令来validation它的状态:
SHOW VARIABLES LIKE '%query_cache%';
列出数据时,您将看到query-cache-size,如果设置为0,则表示查询caching已禁用,此variables确定用于查询caching的内存(以字节为单位)。
就像你为查询cachingtypes所做的那样,把下面的代码添加到你的my.cnf或my.ini中:
query-cache-size = 40M