高性能MySQL这本书中关于查询缓存有一段这样的描述:
Cache invalidations can happen because of fragmentation, insufficient memory, or
data modifications. If you have allocated enough memory to the cache and tuned the
query_cache_min_res_unit value properly, most cache invalidations should be due to
data modifications. You can see how many queries have modified data by examining
the Com_* status variables (Com_update, Com_delete, and so forth), and you can see
how many queries have been invalidated due to low memory by checking the Qcache_
lowmem_prunes status variable.
既然没有命中,肯定要有com_select,读之后要加到缓存中,要有qcache_inserts,既然是这样,我不解的是应该一次com_select就对应一次qcache_inserts阿,为什么qcache_inserts会比com_select小的多呢?原来是这样的:
The total number ofSELECTqueries is given by this formula:
Com_select + Qcache_hits+ queries with errors found by parser
TheCom_selectvalue is given by this formula:
Qcache_inserts + Qcache_not_cached + queries with errors found during the column-privileges check
总的select查询数等于com_select(没命中) + qcache_hits(命中) + 解析错误的,其中的com_select等于qcache_inserts(失效) + qcache_not_cache + 权限检查错误的。也就是说qcache_inserts这个计数不是表示没被缓存而进行的读,而是缓存失效而进行的读,没被缓存和缓存失效是两个概念,分别计数,但都会引起com_select。
参考:
http://dev.mysql.com/doc/refman/5.0/en/query-cache-status-and-maintenance.html
http://www.wzsky.net/html/article/php/php2/15874.html
还是要认真读官方文档阿。
分享到:
相关推荐
5. 使用 SHOW 语句查询查询缓存指标Qcache_free_blocks、Qcache_free_memory、Qcache_hits、Qcache_inserts、Qcache_lowmem_prunes、Qcache_not_cached、Qcache_queries_in_cache、Qcache_total_blocks。 结论 ...
通过 Qcache_inserts 和 Qcache_hits 两个参数可以计算出 Query Cache 的命中率。 11. Qcache_lowmem_prunes:多少条 Query 因为内存不足而被清除出 Query Cache。 12. Qcache_queries_in_cache:当前 Query Cache...
* Qcache_inserts:缓冲插入次数 * Qcache_lowmem_prunes:缓冲回收次数 * Qcache_not_cached:缓冲未命中次数 * Qcache_queries_in_cache:缓冲中的查询次数 * Qcache_total_blocks:缓冲总块数 MySQL 实训 5 通过...
监控Qcache_free_memory、Qcache_queries_in_cache、Qcache_lowmem_prunes等状态变量,可以帮助判断缓存的健康状况和调优方向。通过实验和监控,可以调整query_cache_size和query_cache_min_res_unit,找到最佳配置...
通过SHOW语句,可以查询查询缓存相关的指标,例如Qcache_free_blocks、Qcache_free_memory、Qcache_hits、Qcache_inserts、Qcache_lowmem_prunes、Qcache_not_cached、Qcache_queries_in_cache、Qcache_total_blocks...
通过监控 `Qcache_inserts`, `Qcache_hits`, `Qcache_lowmem_prunes` 等状态变量,可以调整 `query_cache_size`。如果 `Qcache_lowmem_prunes` 值较高,表示缓冲区经常不足,应考虑增大缓存大小;而如果 `Qcache_...
5. **实验5-5**:通过`SHOW`语句查看查询缓存的状态,包括Qcache_free_blocks(空闲的块数)、Qcache_free_memory(可用的内存)、Qcache_hits(缓存命中的次数)、Qcache_inserts(添加到缓存的查询数)、Qcache_lowmem_...
通过监控`Qcache_inserts`, `Qcache_hits`, `Qcache_lowmem_prunes`, `Qcache_free_blocks`等状态变量,可以调整合适的缓存大小。如果`Qcache_lowmem_prunes`值高,表示缓冲不足,应增加`query_cache_size`;而`...
- 查询缓存命中率计算公式:(Qcache_hits / (Qcache_hits + Qcache_inserts))* 100%。 4. **索引缓存**: - `key_buffer_size`: 索引缓冲区的大小,用于存储MyISAM表的索引。 - 索引缓存命中率计算公式:(Key_...
在这个实验中,我们将使用 SHOW 语句来查询查询缓冲相关的指标,包括 Qcache_free_blocks、Qcache_free_memory、Qcache_hits、Qcache_inserts、Qcache_lowmem_prunes、Qcache_not_cached、Qcache_queries_in_cache、...
1. 缓存命中率:Qcache_hits(缓存命中次数)除以Com_select(总查询次数)。 2. 缓存写入率:Qcache_inserts(缓存写入次数)除以查询次数。 3. 命中-写入比率:Qcache_hits除以Qcache_inserts,此比率高表示缓存...
- **监控缓存命中率**:缓存命中率是衡量缓存效率的重要指标,可以通过以下命令监控:`SHOW STATUS LIKE 'Qcache_hits';` `SHOW STATUS LIKE 'Qcache_inserts';` - **调整缓存参数**:根据监控结果,适时调整缓存...
监控查询缓存的性能主要是关注三个指标:碎片率(`Qcache_free_blocks / Qcache_total_blocks * 100%`)、命中率(`(Qcache_hits – Qcache_inserts) / Qcache_hits * 100%`)和内存使用率。高命中率意味着更多的...
MySQL 数据库巡检报告 本报告对 MySQL 数据库进行了全面的...* 结果解释:检查结果正常,Qcache_lowmem_prune 正常,Qcache_hits 正常,Qcache_total_blocks 和 Qcache_free_blocks 正常,所有指标都在正常范围内。
如果`Qcache_hits`值高,表示查询重复率高,缓存效果好;反之,如果重复率低,可能不需启用查询缓存,甚至可以使用`SQL_NO_CACHE`来禁用查询缓存。 3. **table_cache**:也称为Open Table Cache,它决定了MySQL可以...
可以通过观察`Qcache_inserts`, `Qcache_hits`, `Qcache_lowmem_prunes`等状态变量来调整此值。如果`Qcache_lowmem_prunes`频繁发生,说明缓存不足,应考虑增加大小;而如果`Qcache_hits`不高,可能表明查询重复率低...
15. **Qcache_free_memory** 和 **Qcache_not_cached**:查询缓存的空闲内存和未缓存的查询,调整查询缓存大小和策略可优化内存使用。 以上只是MySQL status部分关键参数的解读,实际的status变量远比这复杂。通过...
- **缓存命中**:`SHOW STATUS LIKE ‘Qcache%’`监控查询缓存,如`Qcache_lowmem_prune`、`Qcache_hits`和`Qcache_total_blocks`,确保缓存利用率高且无内存不足导致的清理问题。 9. **其他巡检点**:还包括检查...