文档章节

MySQL查询缓存

AaronSheng
 AaronSheng
发布于 2017/07/11 13:00
字数 597
阅读 9
收藏 0

MySQL 查询缓存保存查询返回的完整结果。当查询命中改缓存,MySQL 会立刻返回结果,跳过了解析、优化和执行阶段。
查询缓存系统会跟踪查询涉及查询中的每个表,如果这些表发生变化,那么和这个表相关的所有查询数据都将失效。这种机制看起来很低效,因为数据变化时很可能对应查询结果并没有变更,但是这种简单实现方式代价很小,对于一个非常繁忙的系统来说至关重要。

MySQL 判断缓存命中的方法很简单:缓存存放在一个引用表中,通过一个哈希值引用,这个哈希值包含了如下因素,即查询本身、当前要查询的数据库、客户端协议的版本等。当判断缓存是否命中时,MySQL 不会解析、“正规化”或者参数化查询语句,而是直接使用 SQL 语句和客户端送过来的其他原始信息。任何字符上的不同,如空格。注释等都会导致缓存不命中。
如果查询中包含任何用户自定义的函数、存储函数、用户变量、临时表、mysql 库中的系统表等都不会被缓存。

查询缓存配置:
query_cache_type
是否打开查询缓存。可以设置成 OFF、ON 或 DEMAND。DEMAND表示只有在查询语句中使用 SQL_CACHE 的语句才放入查询缓存。默认为 ON,分别对应数字 0,1,2。

query_cache_size
查询缓存使用的总内存的空间,单位是字节。这个值必须是1024的倍数,否则 MySQL 实际分配的数据会有所不同。默认16M。

query_cache_min_res_unit
查询缓存中分配内存块时的最小单位。设置小,浪费空间少,但是频繁的内存申请;如果设置大,碎片会很多。

query_cache_limit
MySQL 查询缓存的最大查询结果。默认1M。

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

手动设置查询缓存:
SQL_CACHE 和 SQL_NO_CACHE
OFF/0,不缓存所有查询结果。
ON/1,缓存所有查询结果,SELECT SQL_NO_CACHE .... 指定不缓存。
DEMAND/2,显示指定缓存结果,SELECT SQL_CACHE .... 指定缓存。

© 著作权归作者所有

AaronSheng
粉丝 14
博文 52
码字总数 51122
作品 0
深圳
程序员
私信 提问
MySQL探秘(二):SQL语句执行过程详解

 昔日庖丁解牛,未见全牛,所赖者是其对牛内部骨架结构的了解,对于MySQL亦是如此,只有更加全面地了解SQL语句执行的每个过程,才能更好的进行SQL的设计和优化。  当希望MySQL能够以更高的...

ztelur
2018/08/12
0
0
MySQL深入07-查询缓存

MySQL查询执行流程 查询流程: 客户端发送一条查询给服务器; 服务器先检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果;否则,进入下一阶段; 服务器进行SQL解析、预处理,再由...

余二五
2017/11/23
0
0
深度解析MySQL查询缓存机制

MySQL查询缓存机制是MySQL数据库中的重要机制之一,下面将为您深入分析MySQL查询缓存机制,供您参考学习之用。 MySQL缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器...

白狼栈
2016/03/01
51
0
[玩转MySQL之四]MySQL缓存机制

一、前言 在当今的各种系统中,缓存是对系统性能优化的重要手段。MySQL Query Cache(MySQL查询缓存)在MySQL Server中是默认打开的,但是网上各种资料以及有经验的DBA都建议生产环境中把MySQL...

沈欧邦
2018/09/30
0
0
使用ProxySQL查询缓存进行扩展

原文:http://proxysql.com/blog/scaling-with-proxysql-query-cache 作者:Rene mysql 查询缓存 在写关于ProxySQL 查询缓存之前,让我们先看一下MySQL 查询缓存。 MySQL 查询缓存是一个非常...

Amnesiasun
2017/06/01
0
0

没有更多内容

加载失败,请刷新页面

加载更多

EDI 电子数据交换全解指南

EDI(Electronic Data Interchange,电子数据交换)技术使得企业与企业(B2B)实现通信自动化,帮助交易伙伴和组织更快更好地完成更多工作,并消除了人工操作带来的错误。从零售商到制造商、物...

EDI知行软件
今天
3
0
CentOS7的LVM动态扩容

# 问题 CentOS7上面的磁盘空间有点紧张,需要扩容。 解决 查询当前磁盘状态 [root@xxx ~]# lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTfd0 2:0 1 4K ...

亚林瓜子
今天
5
0
Kafka 0.8 Producer (0.9以前版本适用)

Kafka旧版本producer由scala编写,0.9以后已经废除 示例代码如下: import kafka.producer.KeyedMessage;import kafka.javaapi.producer.Producer;import kafka.producer.ProducerConfig;......

实时计算
今天
5
0
Giraph源码分析(八)—— 统计每个SuperStep中参与计算的顶点数目

作者|白松 目的:科研中,需要分析在每次迭代过程中参与计算的顶点数目,来进一步优化系统。比如,在SSSP的compute()方法最后一行,都会把当前顶点voteToHalt,即变为InActive状态。所以每次...

数澜科技
今天
6
0
Navicat 快捷键

操作 结果 ctrl+q 打开查询窗口 ctrl+/ 注释sql语句 ctrl+shift +/ 解除注释 ctrl+r 运行查询窗口的sql语句 ctrl+shift+r 只运行选中的sql语句 F6 打开一个mysql命令行窗口 ctrl+l 删除一行 ...

低至一折起
今天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部