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文件。

相关推荐
SelectDB7 分钟前
快手基于 Apache Doris 千亿多模态检索的实践
大数据·数据库·数据分析
SelectDB12 分钟前
StarRocks 迁移至 Apache Doris 完整指南:三步完成结构、数据与业务平滑切换
大数据·数据库·数据分析
这个DBA有点耶13 分钟前
InnoDB索引组织表下,复合主键和自增主键的物理存储差异与选型对比
数据库·mysql·架构
其实防守也摸鱼44 分钟前
常见安全架构中 Shiro 的认证确认机制解析
运维·服务器·数据库·windows·github
TDengine (老段)1 小时前
TDengine 常见问题 TOP7
大数据·数据库·时序数据库·常见问题·tdengine·涛思数据
+VX:Fegn08952 小时前
计算机毕业设计|基于java+ vue共享单车信息系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
mysqloffice2 小时前
数智时代,核心系统数据库架构往哪走
数据库·人工智能
l1t2 小时前
DeepSeek总结的 pgColumnar 1.0-alpha4 发布说明
数据库·postgresql
DBA_G2 小时前
南大通用GBase 8s数据库助力某农商行核心系统投产
数据库
工业涂料百问3 小时前
【环保合规】系列(四)工业涂料碳足迹怎么算?边界定义、因子选择与减排优先级拆解
数据库