【发布时间】:2015-06-13 21:03:58
【问题描述】:
我正在尝试将查询缓存添加到我的 MySQL 数据库。但似乎我的查询结果太小而无法缓存,因此我尝试将 query_cache_min_res_unit 更改为极低的值(例如 1)以测试是否会创建缓存。我发现最小值是 512 字节(这就是我尝试将其设置为 1 时设置的值),有什么办法可以改变这个最小值吗?
【问题讨论】:
标签: mysql performance caching
我正在尝试将查询缓存添加到我的 MySQL 数据库。但似乎我的查询结果太小而无法缓存,因此我尝试将 query_cache_min_res_unit 更改为极低的值(例如 1)以测试是否会创建缓存。我发现最小值是 512 字节(这就是我尝试将其设置为 1 时设置的值),有什么办法可以改变这个最小值吗?
【问题讨论】:
标签: mysql performance caching
QC 中的内存分配很笨拙。你不能低于 512。
您真的需要 QC 吗?请记住,每个写入表都会清除该表的 QC 中的每个条目。
计算这些:
Qcache_free_blocks * 4096 / query_cache_size -- fragmentation
Qcache_total_blocks * query_cache_min_res_unit / Qcache_queries_in_cache -- estimate of query size
(query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache / query_alloc_block_size
Qcache_hits / (Qcache_hits + Com_select) -- hit ratio
Qcache_hits / Qcache_inserts -- >10 is good
query_cache_size 的最大实际大小为 50M。不仅如此,“修剪”会消耗过多的 CPU。
【讨论】: