《MySQL优化方向之查询缓存的介绍,提升我们的数据库性能》要点:
本文介绍了MySQL优化方向之查询缓存的介绍,提升我们的数据库性能,希望对您有用。如果有疑问,可以联系我们。
MySQL的查询缓存是我们优化MySQL数据库的一个方向,我们有需要介绍一下,看看MySQL的查询缓存是什么?它是怎么工作的?什么时候不会走查询缓存?以及为什么查询缓存不生效等等问题.
查询缓存是什么
将某个select语句和相应的查询结果缓存起来,如果以后有相同的select语句的话,就直接从查询缓存中读取结果,不必要再执行表查询.
这里指的是同一个select语句.
仅仅对select语句有效.
因为不必要执行表查询,所以更快.
它不会返回过时的数据,如果数据有改变,整个查询缓存将被冲洗.
仅仅适用于以读为主的应用,频繁写应用不得当.
反省MySQL数据库是否支持查询缓存
在命令行登录MySQL服务器之后,执行SHOW VARIABLES LIKE 'have_query_cache'语句就能够看到你的MySQL服务器是否开启了查询缓存,参考下图,如果为yes表现支持查询缓存,否则表现不支持查询缓存,该值有0,1,2三种.
0表现不支持.
1表现能够缓存的都缓存,除非你指定SQL_NO_CACHE的除外.
2表现仅仅明确指定了SQL_CACHE的才会缓存.
开启SQL查询缓存
SELECT SQL_CACHE 字段名1,字段名2 FROM 表名 WHERE
SELECT SQL_NO_CACHE 字段名1,字段名2 FROM 表名 WHERE
前者是开启,后者是不开启查询缓存
不缓存的SQL语句特征
如果我们的SELECT语句里面包括有一些动态实时的函数,那么这个select语句将无法被查询缓存缓存起来.
now函数 表现现在的时间,是一个动态的值,查询缓存肯定无法使用,还有rand函数也是一样,是一个随机返回值,还有found_rows函数,返回的是行数,会变,还有很多同类的函数,查询缓存都是不生效的.
为什么缓存不了
除了前面说的SQL_NO_CACHE外,还有两个配置参数控制着查询缓存,一个是query_cache_limit和query_cache_size,前者控制当查询成果大于多少的时候将不会被缓存起来,而后者控制查询缓存最大的尺寸.
查询缓存什么时候失效
如果我们的相应成果有改变,那么查询缓存将失效,或者我们人为手动执行了下面这个SQL语句,那么所有的查询缓存将失效:
FLUSH QUERY CACHE
相应的视频请点击:MySQL性能提升计划之查询缓存介绍
《MySQL优化方向之查询缓存的介绍,提升我们的数据库性能》是否对您有启发,欢迎查看更多与《MySQL优化方向之查询缓存的介绍,提升我们的数据库性能》相关教程,学精学透。维易PHP学院为您提供精彩教程。
转载请注明本页网址:
http://www.vephp.com/jiaocheng/8690.html