软件测试

MySQL的缓存(Query Cache)

2021-03-11  本文已影响0人  卫青臣

1、MySQL Query Cache

query cache是MySQL数据库用于缓存select语句以及语句的结果集。该缓存在技术细节上类似键值对存储,将select语句和语句的查询结果集做了一个hash映射并保存在一定的内存区域中。当客户端发起sql查询时,query cache的查找逻辑是:先对sql进行相应的权限验证,接着通过query cache查找结果。它不需要经过Optimizer模块进行执行计划的分析优化,也不需要发送同任何存储引擎的交互,减少了大量的磁盘IO和CPU运算,所以有时候效率非常高。

2、 设置参数

可以通过调整MySQL的配置(通常在/etc/my.cnf)来设置query cache,主要有5个参数:

3、Query Cache和性能

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

4、其他

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

上一篇下一篇

猜你喜欢

热点阅读