MySQL 5.1 – innodb – query_cache_size – 由于内存不足,已经从查询caching中删除了9,418,108个查询

目前运行在一个16GB的系统 – Ubuntu 64位。 INnodb缓冲池设置为10GB。

调优引擎显示如下:

QUERY CACHE Query cache is enabled Current query_cache_size = 512 M Current query_cache_used = 501 M Current query_cache_limit = 4 M Current Query cache Memory fill ratio = 97.87 % Current query_cache_min_res_unit = 4 K However, 9418108 queries have been removed from the query cache due to lack of memory Perhaps you should raise query_cache_size 

这是超过900万查询删除。 系统正常运行时间为8天。 我应该删除查询caching吗? 我们的数据库总是在沉重的I / O下。

TIA

哦,是的,通过一切手段,请禁用查询caching(设置query_cache_size = 0)。 为什么?

查询caching将总是与InnoDB交锋。 如果修改不会影响其他事务的可重复读取,那么InnoDB的MVCC会让查询从查询​​caching中提供查询将会很好。 不幸的是,它并没有这样做。

显然,你有很多的查询,相当迅速失效,不重复使用。

对于MySQL 4.0以下的InnoDB,查询caching已被禁用。 对于MySQL 4.1+,InnoDB允许在每个表的基础上访问查询caching时播放stream量警报。

有关如何实际执行的更多信息,请阅读“高性能MySQL(第二版)”一书的第213-215页。