MySQL Query Cache实现原理

MySQL的Query Cache实现原理实际上并不是特别复杂,简单来说就是将客户端请求的Query语句(仅限于SELECT类型的Query)通过一定的hash算法进行一个计算,得到一个hash值,存放在一个hash桶中

同时将该Query的结果集(ResultSet)也存放在一个内存Cache中。存放Query hash值的链表中每一个hash值所在节点的同时,还存放了该Query所对应的Result Set的Cache所在的内存地址,以及该Query涉及的所有Table的标识等一些其他相关信息

系统接受到任何一个SELECT类型的Query时,首先计算出其hash值,然后通过该hash值到Query Cache中去匹配,如果找到了完全相同的Query,则直接将之前所缓存(cache)的Result Set返回给客户端,完全不须要进行后面的任何步骤即可完成这次请求

而后端的任何一个表的任何一条数据发生变化之后,也会通知Query Cache,须要将所有与该Table有关的Query的Cache全部失效,并释放出之前占用的内存地址,以便后面其他的Query能够使用

原文发布于微信公众号 - 性能与架构(yogoup)

原文发表时间:2015-08-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏微信公众号:Java团长

Java面试中常问的数据库方面问题

B+树是一个平衡的多叉树,从根节点到每个叶子节点的高度差值不超过1,而且同层级的节点间有指针相互链接,是有序的

1213
来自专栏云计算教程系列

想熟悉PostgreSQL?这篇就够了

PostgreSQL是自由的对象-关系型数据库服务器,在灵活的BSD风格许可证下发行。它在其他开放源代码数据库系统和专有系统之外,为用户又提供了一种选择。 我们...

2402
来自专栏hh

mysql-innodb关键特性

1.插入缓冲(insert buffer):数据页一样,是物理页的一个组成部分,其数据结构是一棵B+树,存放在ibdata1(共享表空间)中。

4156
来自专栏逍遥剑客的游戏开发

关于Singleton

1442
来自专栏破晓之歌

Python接入mysql数据库 原

右侧有个database,点开后左上角有个“+”符号,选择Data Source-Mysql

731
来自专栏java思维导图

数据库常见的面试题大全

触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可...

1494
来自专栏Snova云数仓

Greenplum资源队列初识

在Greenplum的4.x版本之后,加入了资源队列的概念,其主要作用就是限制用户或者单个SQL对资源的消耗。避免出现消耗过多资源,影响其他用户或者SQL计算。...

80914
来自专栏乐沙弥的世界

RMAN 提示符下执行SQL语句

       在手动恢复数据库时,有时候需要在SQL*Plus提示符以及操作系统提示符,RMAN提示符下来回切换显得有些繁琐。实际上RMAN为我们提供了命令行下...

1193
来自专栏AILearning

Apache Zeppelin 中 Cassandra CQL 解释器

Name Class Description %cassandra CassandraInterpreter 为Apac...

3079
来自专栏SpringBoot 核心技术

第六章:使用QueryDSL的聚合函数

3102

扫码关注云+社区

领取腾讯云代金券