调整mysqltuner.pl的建议:query_cache_limit

时间:2010-04-11 12:55:02

标签: mysql

mysqltuner.pl脚本给出了以下建议:

query_cache_limit (> 1M, or use smaller result sets)

MySQL状态输出显示:

mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+------------+
| Variable_name           | Value      |
+-------------------------+------------+
| Qcache_free_blocks      | 12264      | 
| Qcache_free_memory      | 1001213144 | 
| Qcache_hits             | 3763384    | 
| Qcache_inserts          | 54632419   | 
| Qcache_lowmem_prunes    | 0          | 
| Qcache_not_cached       | 6656246    | 
| Qcache_queries_in_cache | 55280      | 
| Qcache_total_blocks     | 122848     | 
+-------------------------+------------+
8 rows in set (0.00 sec)

从上面的状态输出中,我如何判断是否需要query_cache_limit的建议增加?

1 个答案:

答案 0 :(得分:18)

最好的办法是设置某种测试工具,在数据库上执行逼真的(由您的方案定义)加载,然后使用不同的设置对MySql运行该测试。调整本身就是一门艺术,如果不知道你的确切需求就很难给出一个全面的答案。

来自http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html

  

Qcache_free_memory计数器   提供对缓存免费的深入了解   记忆。观察到的总量低于总量   为缓存分配可以指示   一个尺寸不足的缓存,可以   通过改变全球来弥补   变量query_cache_size

     

Qcache_hitsQcache_inserts显示   查询的次数   从缓存服务多少   查询已被插入   缓存。击打与插入物的比率低   指示很少的查询重用或a   设置太低了   query_cache_limit,用于   管理专用于每个的RAM   单个查询缓存条目。大   查询结果集将需要更大   此变量的设置。

     

查询重用率较差的另一个指标   正在增加Qcache_lowmem_prunes   值。这表明MySQL的频率   必须从缓存中删除查询   用于传入的语句。   数量增加的其他原因   Qcache_lowmem_prunes是{。}   尺寸过小的缓存,无法容纳   需要的SQL语句和数量   结果集和内存碎片   在缓存中可以缓解   发出FLUSH QUERY CACHE   声明。您可以删除所有查询   来自RESET QUERY的缓存   CACHE命令。

     

Qcache_not_cached计数器提供   深入了解报表的数量   对MySQL执行而不是   可缓存,由于是一个   非SELECT语句或存在   明确禁止进入   SQL_NO_CACHE提示。

您的点击率与插入率之比约为1:15或6%,因此看起来您的设置可以通过一些微调来实现(尽管如我所说,您知道自己的要求是最好的判断最好的)。