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 确实有一定作用。
至于要完整关闭 Query Cache,需要同时将 MySQL 的 query_cache_type 及 query_cache_size 同时设定为 0, 以下是关闭方法:
方法是开启 my.cnf:
# vi /etc/my.cnf
在 [mysqld] 段落,找到 query_cache 的设定,如果没有便自行加入,改成这样:
query_cache_type=0
query_cache_size=0
修改完后需要重新启动 MySQL 才会生效:
# systemctl restart mysql
你可能感兴趣的内容: