mysql的缓存机制是什么意思_MySql的缓存机制

2ff34e647e2e3cdfd8dca593e17d9b0a.png

导语MySql查询缓存机制是Mysql数据库的重要机制之一,本文将对其缓存机制进行较为深入的分析。

1. MySql查询缓存

MySql缓存主要指的是查询缓存-Query Cache,会缓存执行的sql文本及查询结果集。当运行相同的sql语句时,服务器直接从缓存中获取查询结果,而不再去解析和执行对应的sql。

Query Cache 的具体实现类似KV存储,将select语句和该查询语句的结果集作一个hash映射并保存在一定的内存区域中。Query Cache的查询逻辑:

客户端发起SQL查询 —> 对SQL进行相应的权限验证 —-> 通过Query Cache查询命中。这个过程不需要经过Optimizer模块进行执行计划的分析优化,更不需要发生同任何存储引擎的交互,减少了大量的磁盘IO和CPU运算,所以有时候效率非常高。但是当表更改了(表中任何数据或是结构的改变,包括INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE等,也包括那些映射到改变了的表的使用MERGE表的查询),那么这个表的所有缓存查询将不再有效,查询缓存值得相关条目也会被清空。因此,对于频繁更新的表,查询缓存是不合适的,而对于一些不常改变但有大量相同sql查询的表,查询缓存会节约很大的性能

2. Query Cache的设置参数

通过调整Mysql查询缓存的参数可以设置Query Cache的功能和性能,主要包括6个参数:

-> show variables like ‘%query _ cache%’;have_ query_cache: 查询缓存是否可用

query _ cache _limit: 允许缓存的单条查询结果集的最大容量,默认是1MB,超过此参数设置的查询结果集将不会被缓存

query cache size: 设置 Query Cache 所使用的内存大小,默认值为0,大小必须是1024的整数倍,如果不是整数倍,MySQL 会自动调整降低最小量以达到1024的倍数;

query cache type: OFF关闭 ; ON 开启;Demand 开启Query Cache 功能,但是只有当SELECT语句中使用了SQL _ CACHE 提示后,才使用Query Cache

query cache wlock _ invalidate:控制当有写锁定发生在表上的时刻是否先失效该表相关的Query Cache,如果设置为 1(TRUE),则在写锁定的同时将失效该表相关的所有Query Cache,如果设置为0(FALSE)则在锁定时刻仍然允许读取该表相关的Query Cache。

query cache min res unit:设置查询缓存Query Cache每次分配内存的最小空间大小,即每个查询的缓存最小占用的内存空间大小

判定是否采用缓存查询,可以使用MySql语句查看:

->show status like ‘Qcache hits’;

Qcache hits表示sql查询在缓存中命中的累计次数,是累加值

设置缓存内存,可以使用MySql语句:

mysql> set global query cache size = 600000; –设置缓存内存

开启缓存查询,可以使用MySql语句:

mysql> set session query _ cache _type = ON; –开启查询缓存

3. Query Cache的性能分析   对于某些写频繁的系统,开启Query Cache功能可能并不能让系统性能有提升,有时反而会有下降。

MySql为了保证Query Cache缓存的内容和实际数据绝对一致,当某个数据表发生了更新、删除及插入操作,MySql都会强制使所有引用到该表的查询SQL的Query Cache失效。对于密集写操作,启用查询缓存后很可能造成频繁的缓存失效,间接引发内存激增及CPU飙升,对已经非常忙碌的数据库系统这是一种极大的负担。

4. Query Cache实现差异   Query Cache因MySql的存储引擎不同而实现略有差异,比如MyISAM,缓存的结果集存储在OS Cache中,而最流行的InnoDB则放在Buffer Pool中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值