MySQL 的 Query Cache 在某些环境是有一定作用的,但大部分的情况都没什么作用,而且反而会影响效能。
当 MySQL 执行 SELECT 查询时,会将结果放到 Query Cache 内,当下次执行相同的 SELECT 查询时,不会在数据库查询结果,而会在 Query Cache 取得,从而提高执行效率。
这样听起来不错,但实际上 Query Cache 的机制有一个问题,就是当资料表被更动后,储存在 Query Cache 的 Cache 会失效,MySQL 会在背后将 Cache 删除及重新建立 Cache。更改资料表其实很常发生,不单单是 TRUNCATE ALTER TABLE DROP TABLE 这类更改资料表结构的语句,连 INSERT UPDATE DELETE 也会使储存在 Query Cache 的 Cache 失效。所以如果资料表是经常更新的话,Query Cache 反而会使系统的工作量加重。
但如果你的资料表及里面的资料很少更动,那么开启 Query Cache 确实有一定作用。