目前运行在一个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页。