MySQL查询缓存的使用

查询缓存的使用

my.cnf 中加入以下配置 ,重启 MySQL 开启查询缓存 :

query_cache_type = 1
query_cache_size = 60000

MySQL 命令行执行以下命令,也可开启查询缓存:

set global query_cache_type = 1;
set global query_cache_size = 600000 ;

如上,开启查询缓存后在同样的查询条件以及数据情况下,会直接在缓存中返回结果 。

这里的查询条件包括查询本身、当前要查询的数据库、客户端协议版本号等一些可能影响结果的信息 。

因此任何两个查询在任何字符上的不同都会导致缓存不命中 。

此外,如果查询中包含任何用户自定义函数、存储函数、用户变量 、 临时表、 MySQL 库中的系统表, 其查询结果也不会被缓存 。

缓存建立之后, MySQL 的查询缓存系统会跟踪查询中涉及的每张表,如果这些表( 数据或结构)发生变化,那么和这张表相关的所有缓存数据都将失效 。

缓存虽然能够提升数据库的查询性能,但是缓存也同时带来了额外的开销,每次查询后都要做一次缓存操作,失效后还要销毁 。

因此,开启缓存查询要慎重,尤其对于写密集的应用来说更是如此。

如果开启,要注意合理控制缓存空间大小, 一般来说其大小设置为几十 MB 比较合适 。

此外,还可以通过 sql_cache 和 sql_no_cache 来控制某个查询语句是再需要进行缓存 :

select sql_no_cache count(*) from table_user ;
本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » MySQL查询缓存的使用

Leave a Reply

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多