mysql 开发进阶篇系列 24 查询缓存下

时间:2019-05-11 09:40来源:计算机教程
一. 查询缓存 1.开启缓存 [root@xuegod64 etc]# vim my.cnf 设置了缓存开启,缓存最大限制128M,重启服务后,再次查询 -- 开启查询缓存后 SHOW VARIABLES LIKE '%query_cache%'; 2 测试缓存 现在是缓存2次,命

一. 查询缓存

  1.开启缓存

[root@xuegod64 etc]# vim my.cnf

  vnsc5858威尼斯城官网 1

    设置了缓存开启,缓存最大限制128M,重启服务后,再次查询

--  开启查询缓存后
 SHOW VARIABLES LIKE '%query_cache%';

    vnsc5858威尼斯城官网 2

  2 测试缓存   现在是缓存2次,命中一次
  vnsc5858威尼斯城官网 3

SELECT ID FROM  User1 WHERE ID=2
SELECT Age FROM  User1 WHERE ID=2

  上面是二个查询sql语句,此时缓存数是4,如下图所示:

  vnsc5858威尼斯城官网 4

--再次查询上面相同的sql语句,此时命中率结果为3,缓存数还是4
SELECT ID FROM  User1 WHERE ID=2
SELECT Age FROM  User1 WHERE ID=2

  vnsc5858威尼斯城官网 5

--查询相同的sql语句,条件值大小写不一样
SELECT ID FROM  User1 WHERE `Name`='Abc'
SELECT ID FROM  User1 WHERE `Name`='aBc'

  此时缓存数是6,说明缓存区分where条件值的大小写。同样也会区分sql关键词的大小写。如下图所示:
  vnsc5858威尼斯城官网 6
  设置好query_cache_size值后,重新启动服务初始化时:query_cache_size==Qcache_free_memory的值。
  缓存的命中率公式为: Qcache_hits/(Qcache_hits Qcache_inserts)。

  总结:根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率。但开起缓存,前提条件是你有大量的相同或相似的查询,而很少改变表里的数据,否则没有必要使用此功能。

MySQL数据库提供了查询缓冲机制。使用该查询缓冲机制,MySQL将SELECT语句和查询结果存放在缓冲区中,以后对于同样的SELECT语句区分大小写),将直接从缓冲区中读取结果。以节省查询时间,提高了SQL查询的效率。本文我们主要就介绍一下MySQL数据库的查询缓冲机制,接下来就让我们来一起了解一下这部分内容。

通过调节以下几个参数可以知道query_cache_size设置得是否合理:

Qcache inserts

Qcache hits

Qcache lowmem prunes

Qcache free blocks

Qcache total blocks

Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,同时Qcache_hits的值非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小Qcache_hits的值不大,则表明你的查询重复率很低,这种情况下使用查询缓冲反而会影响效率,那么可以考虑不用查询缓冲。此外,在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。

Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多query_cache_type指定是否使用查询缓冲。

vnsc5858威尼斯城官网,如果设置为:

query_cache_size = 32M

query_cache_type= 1

编辑:计算机教程 本文来源:mysql 开发进阶篇系列 24 查询缓存下

关键词: