美文网首页
查询缓存

查询缓存

作者: 码农也越野 | 来源:发表于2017-03-07 18:39 被阅读0次

查询缓存原理

mysql查询缓存保存完整的查询结果,当查询命中缓存时,立刻返回结果,跳过了解析,优化和执行阶段。

如何判断缓存命中

缓存存放在一张引用表中,通过一个哈希值引用。这个哈希值包含了查询本身、要查询的数据库、客户端协议版本号等元素。因此任何元素的更改都会导致不能命中。

为什么在sql语句中使用Now()等函数或者变量时,会导致查询缓存失效?

这是因为mysql在执行完这样的查询后,压根就不会把结果放到查询缓存中。

使用查询缓存注意要点和弊端

如果要开启查询缓存,最好将查询缓存大小配置小一点。
对查询缓存的操作需要加锁,所以性能会有损失。
写操作后需要对该表所有的查询缓存失效,额外的性能消耗。
读操作的命中判断,和读后未命中情况下的更新查询缓存,都会带来性能开销。

怎么利用查询缓存更好

开启查询缓存配置项query_cache_type可以配置成OFF,ON和DEMAND。DEMAND表示只有在查询语句中明确写明SQL_CACHE的语句才会放入查询缓存。如果大量查询需要缓存,而少量不需要缓存时,则可以写明SQL_NO_CACHE。另外还有sql_buffer_result意思是说,在查询语句中,将查询结果缓存到临时表中。
这三者正好配套使用。sql_buffer_result将尽快释放表锁,这样其他sql就能够尽快执行。使用 FLUSH QUERY CACHE 命令,你可以整理查询缓存,以更好的利用它的内存。这个命令不会从缓存中移除任何查询。FLUSH TABLES 会转储清除查询缓存。
RESET QUERY CACHE 使命从查询缓存中移除所有的查询结果。

相关文章

  • MySQL学习——查询缓存

    MySQL查询缓存简介 MySQL查询缓存是MySQL将查询返回的完整结果保存在缓存中。当查询命中该缓存,MySQ...

  • Mysql - 一条sql语句是如何执行的

    1. 连接器 长连接保持通信 2. 查询缓存 每次查询都会缓存查询结果,相同语句再次查询时直接返回缓存结果,缓存结...

  • Yii2缓存组件之数据库查询缓存

    查询缓存 查询缓存是一个建立在数据缓存之上的特殊缓存特性。它用于缓存数据库查询的结果。(PS需配置好缓存配置) 查...

  • 查询缓存

    查询缓存原理 mysql查询缓存保存完整的查询结果,当查询命中缓存时,立刻返回结果,跳过了解析,优化和执行阶段。 ...

  • MySQL数据库性能优化

    MySQL架构 查询缓存 查询缓存(Query Cache)原理: 缓存SELECT操作或预处理查询的结果集和SQ...

  • 5. 查询缓存和索引

    1. 查询缓存 查询缓存( Query Cache )原理缓存SELECT操作或预处理查询的结果集和SQL语句,...

  • Mysql 查询优化

    如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。缓存在第一次查询后,MySQL便将查询语句以及...

  • (8)MySQL性能优化的最佳21条经验(未完待续)

    1.为查询缓存优化你的查询 某些查询语句会让MySQL不使用缓存。 MySQL的查询缓存对这个函数不起作用。像...

  • Redis缓存击穿、穿透、雪崩解决方案

    1、缓存处理流程 接收到查询数据请求时,优先从缓存中查询,若缓存中有数据,则直接返回,若缓存中查不到则从DB中查询...

  • 集成缓存框架入门

    集成caffeineCache缓存功能 @Cacheable:缓存数据,一般用在查询方法上。将查询到的数据进行缓存...

网友评论

      本文标题:查询缓存

      本文链接:https://www.haomeiwen.com/subject/mqzmgttx.html