innodb理解

1.第1个概念buffer pool,当用户想从数据库中获取数据的时候,会从buffer pool中获取数据,如果bp中没有的话会从磁盘中读取。但是内存的空间是少的,所以会通过LRU算法去置换数据。LRU是最近最少使用的算法。通过这个可以使内存空间得到控制。

如果buffer pool还不够快怎么办,在bp的基础上开辟了AHI,自适应hash索引,通过这个索引可以更快的找到想要的数据。

2.知道了怎么读数据后,引出第2个概念就是怎么更数据,改数据分为二类一类是磁盘中存在的,一类是不存在的,对于存在的则直接修改bp中的记录就可以了,如果不存在的呢?如果也先读取进bp,然后再修改的话,就很费时间,所以创建了changer buffer。这个buffer对修改的数据进行储存,先记录下来,如果有人读取的话就更新到bp中,如果没人读取的话,就定期存入磁盘。

这里面还有一个小知识点,就是不是所有的更新都可以通过cb来完成,只有不涉及主键或唯一约束的更新才可以通过cb来进行优化,因为那种有约束的需要第一时间反馈结果,所以不适用于这种场景。

另外第二个小知识点,就是cb中的数据如果通到bp中时,是需要进行merge的。

第三个小知识点,如果直接更新bp的数据,需要打上脏数据标记,然后再更新到磁盘。

3.核心概念log buffer,这个叫日志缓存,数据变更会通过它定期写入磁盘。这里有一个小概念,就是change buffer中的记录不会直接存入log buffer,只有在merge后,直成进入bf时,才会写入log buffer.log buffer中记录的是redo log.

内存3剑客就说完了,接下来就是磁盘部分了。

首先是系统表空间和redo log文件。

相关推荐
GBASE17 小时前
G术时刻 |GBase 8s数据库事务并发控制之封锁技术介绍(下)
数据库
xiezhr1 天前
逛GitHub发现了一款免费的带AI功能的数据库管理工具
数据库·ai编程·dba
吃糖的小孩2 天前
给 QQ AI 机器人设计“可控记忆”:会话摘要、手动长期记忆与角色卡边界
数据库
笃行3503 天前
金仓数据库数据安全双防线:静态存储加密与传输加密实战
数据库
笃行3503 天前
金仓数据库物理备份实战:sys_rman 全流程演练与误覆盖抢救
数据库
笃行3503 天前
金仓数据库逻辑备份实战:从全库导出到 Schema 替换的完整闭环
数据库
SelectDB4 天前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc
这个DBA有点耶4 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵4 天前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql