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
的建议增加?
答案 0 :(得分:18)
最好的办法是设置某种测试工具,在数据库上执行逼真的(由您的方案定义)加载,然后使用不同的设置对MySql运行该测试。调整本身就是一门艺术,如果不知道你的确切需求就很难给出一个全面的答案。
来自http://dev.mysql.com/tech-resources/articles/mysql-query-cache.html:
Qcache_free_memory
计数器 提供对缓存免费的深入了解 记忆。观察到的总量低于总量 为缓存分配可以指示 一个尺寸不足的缓存,可以 通过改变全球来弥补 变量query_cache_size
。
Qcache_hits
和Qcache_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%,因此看起来您的设置可以通过一些微调来实现(尽管如我所说,您知道自己的要求是最好的判断最好的)。