查询缓存(QueryCache)保存查询返回的完整结果。当查询命中该缓存,MySQL会立即返回结果,跳过解析、优化和执行阶段。

官方在特定环境测试结果(官方文档中有详细说明):

1.如果对某表进行简单查询,但每次查询条件都不一样时,打开查询缓存会导致性能下降13%。

2.如对一个只有一行数据的表进行查询,则可以提升238%。

所以查询缓存特别适用于更新频率非常低、查询频率非常高的场景。

缓存命中规则

缓存存放在一个引用表中,通过一个哈希值引用,哈希值包含了(查询本身、当前查询的数据库、客户端协议的版本等)。

判断是否命中时,MySQL不会解析语句,而是直接使用SQL语句和客户端发送来的其他原始信息。任何字符上的不同都会导致缓存不命中。

如果查询语句中包含任何的不确定函数则不会缓存(如NOW()),因为在执行这个查询之后,MySQL会禁止缓存该查询,所以在查询缓存中是不可能找到缓存结果的。

什么情况下查询缓存能发挥作用

并不是所有情况下查询缓存都能提高系统性能。打开查询缓存对读和写操作都会带来额外消耗:

  • 读查询在开始之前必须先检查是否命中缓存。
  • 如果这个读查询可以被缓存,那么当完成执行后,需要将结果存入缓存。
  • 每次写入操作时,需要将对应表的所有缓存都设置失效。如果缓存较大或碎片很多,则会带来很大消耗。

缓存命中率:

SHOW STATUS中能提供一个全局的性能指标用以计算缓存命中率:

每次SELECT查询,要么增加Qcache_hits(查询缓存命中次数),要么增加Com_select(无缓存的查询次数+错误查询+权限检查查询),所以命中率计算公式:Qcache_hits / (Qcache_hits + Com_select)。

缓存配置和维护

query_cache_type:是否打开查询缓存。可以设置为(OFF、ON、DEMAND)。DEMAND表示只有在查询语句中明确标记SQL_CACHE的语句才放入查询缓存。

query_cache_size:查询缓存使用总空间。

query_cache_min_res_unit:在查询缓存中分配内存块的最小单位。

query_cache_limit:MySQL能缓存的最大查询结果。

query_cache_wlock_invalidate:如果某个数据表被其他的连接锁住,是否仍然从查询缓存中返回结果。

指定MySQL查询缓冲区的大小。可以通过在MySQL控制台执行以下命令观察:

SHOW VARIABLES LIKE '%query_cache%';
SHOW STATUS LIKE 'Qcache%';

最新文章

  1. 教你写能被舒服舒服又舒服地调用的iOS库
  2. android 多点
  3. 北大,awk 命令基础练习
  4. 转:gpio_request
  5. Linux搭建FTP服务器
  6. VBA Excel WideCharToMultiByte Compile error on 64-bit System
  7. 最新版Navicat Premium12 中文破解版 安装激活
  8. python dpkt SSL 流tcp payload(从三次握手开始到application data)和证书提取
  9. flex 布局压缩问题
  10. “Interrupted by header callback: Server reports Content-Length”如何解决
  11. 【树莓派】使用VNC进行远程控制
  12. c++之——多态性
  13. jython研究笔记
  14. eml文件解析实例,简历信息抓取工具
  15. Pygame播放声音与音效
  16. AC日记——[USACO5.4]奶牛的电信Telecowmunication 洛谷 P1345
  17. static 成员变量、static 成员函数、类/对象的大小
  18. c语言加密算法头文件下载(base64、md5、sha1)
  19. hit2739
  20. java网络爬虫----------简单抓取慕课网首页数据

热门文章

  1. 配置SVN服务器
  2. C#中类和结构体的区别
  3. 浅谈CAS(Compare and Swap) 原理
  4. 卷积神经网络(CNN)与特殊的卷积
  5. TCP基础
  6. Java SpringMVC实现国际化整合案例分析(i18n) 专题
  7. go-wingui 2018 全新 v2.0 版本发布,包含重大更新!
  8. Android 项目编译过程
  9. 1407251735-hd-美素数.cpp
  10. Qt编程中QDiaog的ESC键(按下Esc键会默认调用reject()方法)