重要的是,查询缓存足够大的存储SELECT语句的结果集。如果Qcache_lowmem_prunes大,这意味着你需要增加query_cache_size变量的值。如果你已经提醒MySQL监视器这种情况下,它可能是因为你有启用查询缓存,但太多的查询,从查询缓存因为内存低。
最佳实践,为了防止查询缓存经常被掏空,最好的做法是修改相关的系统变量。在改变这些变量,运行SHOW变量声明,看到他们的当前值:SHOW VARIABLES LIKE 'query_cache%';
+------------------------------+---------+
| Variable_name | Value |
+------------------------------+---------+
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 0 |
| query_cache_type | ON |
| query_cache_wlock_invalidate | OFF |
+------------------------------+---------+
你应该设置查询缓存变量服务器的选项文件(即my.cnf或my.ini,取决于系统),这样的价值观系统重新启动时也不会丢失。选项文件的[mysqld]节下把这些变量。
下面是一个显示添加和设置相关的选项从选项文件的摘录:[mysqld]
query_cache_type = 1
query_cache_size = value
query_cache_limit = value
query_cache_min_res_unit = value
query_cache_wlock_invalidate = value
当然,你会更换适合你的系统的实际值与显示值。查询缓存大小的增加,虽然可能不会解决您的问题,如果您的表经常变化太大。在这种情况下,它可能不利于使用在所有的查询缓存。当添加完这些选项,重新启动MySQL服务器生效。