博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL查询缓存
阅读量:1545 次
发布时间:2019-04-21

本文共 1577 字,大约阅读时间需要 5 分钟。

查询缓存存储sql语句和对应的发送给客户端的结果。执行相同的sql语句时,mysql server会直接从查询缓存中检索结果,不再需要对sql语句进行解析和执行。查询缓存在session之间是可以共享的。

查询缓存适用于表修改不是很频繁,频繁执行相同查询的环境。不适合表经常更新的表。

查询缓存不会存过期的数据。当表被修改后,查询缓存中的数据会被刷出。

在MySQL 5.6.5中,查询缓存不支持分区表,涉及到分区表的查询时会自动取消查询缓存功能。

 

查询缓存的工作原理

在解析sql语句前,会将客户端发送的sql请求跟查询缓存中的sql进行比较。以下两个sql语句在查询缓存中是不同的:

select * from tab1_name;

SELECT * FROM TAB1_NAME;

必须是相同的sql语句。此外,由于其他原因,sql查询字符串相同也可能会被当做不同的sql语句。查询不同的数据库、使用不同的协议版本、或者不同的字符集时,相同的sql语句也会被单独缓存。

 

查询缓存不适用以下场景:

-外查询的子查询

-function、trigger或event内部的查询

 

查询缓存被命中后,会将Qcache_hits的值进行自增。

如果表发生了变化,比如执行了insert, update, delete, truncate table, alter table, drop table, o或drop database操作,所有缓存的查询结果都会变得无效,并被移出查询缓存。

对视图的查询也会被缓存。

 

SQL语句开启/取消查询缓存功能:

SELECT SQL_CACHE id, name FROM customer; 	#"SQL_CACHE"使用查询缓存SELECT SQL_NO_CACHE id, name FROM customer;	#"SQL_NO_CACHE"不使用查询缓存

 

查看mysql server查询缓存是否可用:

mysql> show variables like 'have_query_cache';+------------------+-------+| Variable_name    | Value |+------------------+-------+| have_query_cache | YES   |+------------------+-------+

 

关闭查询缓存:建议把查询缓存关闭掉,有个全局锁效率不高

query_cache_type = 0query_cache_size = 0

 

设置查询缓存时,query_cache_size的值不得小于40k(用于分配自身结构)

mysql> set global query_cache_size=4000;Query OK, 0 rows affected, 2 warnings (0.00 sec)mysql> show  warnings\G*************************** 1. row ***************************  Level: Warning   Code: 1292Message: Truncated incorrect query_cache_size value: '4000'*************************** 2. row ***************************  Level: Warning   Code: 1282Message: Query cache failed to set size 3072; new query cache size is 02 rows in set (0.00 sec)mysql>

 

转载地址:http://lmdcy.baihongyu.com/

你可能感兴趣的文章
黄家懿:河北高校邀请赛 -- 二手车交易价格预测决赛答辩
查看>>
如何利用pyecharts绘制酷炫的桑基图?
查看>>
王朝阳:河北高校邀请赛 -- 二手车交易价格预测决赛答辩
查看>>
Scratch等级考试(二级)模拟题
查看>>
如何在Jupyter Lab中显示pyecharts的图形?
查看>>
什么是Python之禅?
查看>>
【青少年编程】【Scratch】01 运动模块
查看>>
json的序列化与反序列化
查看>>
【第16周复盘】学习的飞轮
查看>>
如何利用pyecharts绘制炫酷的关系网络图?
查看>>
NCEPU:线下组队学习周报(007)
查看>>
【青少年编程】【二级】寻找宝石
查看>>
【组队学习】【26期】Linux教程
查看>>
LeetCode-LCP 18. 早餐组合(Goland实现)
查看>>
C++从入门到进阶近100本书推荐电子书pdf
查看>>
蓝桥杯 - [2014年第五届真题]分糖果(模拟)
查看>>
蓝桥杯 - [2013年第四届真题]大臣的旅费(DFS)
查看>>
蓝桥杯 - [2013年第四届真题]带分数(全排列)
查看>>
蓝桥杯 - [2013年第四届真题]幸运数(模拟)
查看>>
蓝桥杯 - [2013年第四届真题]横向打印二叉树(排序二叉树)
查看>>