当前位置:网站首页>MySQL InnoDB架构原理
MySQL InnoDB架构原理
2022-07-05 20:40:00 【一只小小狗】
MySQL InnoDB架构原理
1. 架构分析
InnoDB主要分为:在内存中结构 和 在磁盘上结构
内存结构主要为: Buffer Pool (change Buffer 、adaptive hash index) log buffer
磁盘结构分为:表空间和重做日志
表空间:InnoDB数据字典、双写缓存区、修改缓存、Undo日志。
重做日志:存储的就是Log buffer刷到磁盘的数据。
(.idb、.frm、undo.log、(双写缓冲区(doublewrite buffer),故障恢复机制(crash recovery))、锁机制、Redo.log、)
2. InnoDB 内存中的结构
Buffer Pool、(Change Buuffer、Adaptive Hash Index 占用内存属于Buffer Pool)、Log Buffer
2.1 Buffer Pool
Mysql服务器80%的内存都会分配给Buffer Pool。
InnoDB中数据管理的最小单位为页,默认每页16KB。
通过一个页链表实现,少放访问的页会通过缓存池的LRU算法淘汰出去。
实现LRU链表
但是与正常链表不同的是,缓冲池链表分为2部分,New sublist(默认占 5/8的缓存池)和Old sublist(默认占3/8)的缓存池(通过innodb_old_blocks_pct修改,默认值37)
新读取的页会加入Old sublist,而如果Old sublist中的页如果倍访问,会移动到New sublist的头部。
2.1.1 页链表未满,加入新页
2.1.2 Old sublist中的页 在此被访问
2.1.3 页链表已满,加入新页,触发LRU算法
2.2 Change Buffer
为了减少非聚集索引(二级索引),每次修改都直接写入磁盘,会有大量频繁的IO。
Change buffer将非唯一 辅助索引页的操作缓存下来。如果辅助索引页已经在缓存区,则直接修改即可(无需IO),如果不在,则先将修改保存到Change Buffer,从而定期合并写入磁盘文件比如.idb。
2.3 Adaptive Hash Index
虽然数据库记录存储没有使用hash表,但是在内存中的页查找上使用了自适应哈希索引(AHI)一般时间复杂度为O(1),作为减低查询数据(索引)页的方法。
2.4 LogBuffer
Log Buffer是 重做日志(Redo log)在内存中的缓冲区,默认是16M
2.4.1 日志先行策略(Redo log的作用)
InnoDB使用的是日志先行策略,在持久化数据文件前,保证事务记录成Redo log已经写入磁盘。
问题描述: 日志记录到数据库以后,对应的事务就可以返回给用户,表示事务完成。实际上,数据可能只在内存中进行了修改,并没有刷到磁盘上。如果程序异常或者奔溃,内存中的数据就会消失。
解决问题: InnoDB此时通过Redo log来保证数据一致性。显然记录所有的重做日志不太现实。引入了检查点机制,保证日志已经写入磁盘,下次回复从检查点开始。
2.4.2 宕机恢复数据(从Redo Log和Log Buffer)
当数据进行修改操作的时候,会先写入内存空间,然后写入Log Buffer,在将log buffer中记录变化的日志写入物理磁盘redo log文件中。
而出现宕机数据虽然写入了内存,但是没有存入物理存储结构中。这时候会使用检查点机制checkPoint,将redo log文件中数据加载到redo log buffer 内存中。再讲最新数据写入mysql的磁盘数据文件中,从而更新数据。
3. InnoDB 物理磁盘结构
3.1 表空间
3.1.1 InnoDB数据字典
创建一个数据库和一个表后,可以看到test数据库目录中。
db.opt文件:保存了数据test默认字符集
t.frm文件:保存表的数据字典信息
t.idb文件:表的数据和索引 (初始化96K,默认页为16K)
3.1.2 Undo日志 (实现原子性 事务提交回滚,实现MVCC)
MySQL的MVCC(多版本并发控制)依赖Undo Log实现。Mysql的表空间文件t.ibd存储的记录最新值。每个记录都有一个回滚指针(见前面图中的Roll Ptr),指向该记录的最近一条Undo记录,而每条Undo记录都会指向它的前一条Undo记录。
Undo Log 在事务执行过程中就会产生,事务提交后才会持久化,如果事务回滚了则Undo Log也会删除。
3.1.3 双写缓存 (Double-Write Buffer)
当InnoDB记录更新后,由于日志先行策略会先往Log Buffer内存中写入数据,然后再写入磁盘Redo log中。
然后写入物理表磁盘之前会进入双写缓存中,此时如果写入过程发生故障(比如机器掉电或者操作系统崩溃)。
3.1.3.1 写入双写缓存中出错
3.1.3.2 写入物理表文件中出错
4. InnoDB ACID 模型
4.1 Atomicity
主要通过事务机制实现
COMMITHE ROLLBACK语句(通过Undo log实现)
4.2 Consistency
一致性保障
InnoDB的双写缓冲区(double write buffer 磁盘存储的一致性保障)
InnoDB的故障恢复机制 (Redo log数据提交的一致性保障,Undo log 事务提交的一致性保障,bin log保障主从数据一致性持久性)
4.3 Isolation
隔离性
事务的隔离级别
InnoDB 锁机制
4.4 Durability
持久性保证
redo log 缓存到磁盘
double write buffer 双写缓存保障 数据到磁盘
bin log保障主从数据一致性持久性
如有错误欢迎指正
边栏推荐
- Abbkine trakine F-actin Staining Kit (green fluorescence) scheme
- Abnova maxpab mouse derived polyclonal antibody solution
- Analyze the knowledge transfer and sharing spirit of maker Education
- 1、强化学习基础知识点
- Interpreting the daily application functions of cooperative robots
- Frequent MySQL operations cause table locking problems
- 2022 Beijing eye health products exhibition, eye care products exhibition, China eye Expo held in November
- Applet page navigation
- Norgen AAV提取剂盒说明书(含特色)
- Abnova fluorescent dye 620-m streptavidin scheme
猜你喜欢
Norgen AAV提取剂盒说明书(含特色)
Duchefa cytokinin dihydrozeatin (DHZ) instructions
如何形成规范的接口文档
Introduction to dead letter queue (two consumers, one producer)
Applet global configuration
[record of question brushing] 1 Sum of two numbers
Graph embedding learning notes
Frequent MySQL operations cause table locking problems
MySQL fully parses json/ arrays
14、Transformer--VIT TNT BETR
随机推荐
Abnova maxpab mouse derived polyclonal antibody solution
全国爱眼教育大会,2022第四届北京国际青少年眼健康产业展会
Wanglaoji pharmaceutical's public welfare activity of "caring for the most lovely people under the scorching sun" was launched in Nanjing
Ros2 topic [01]: installing ros2 on win10
Norgen AAV extractant box instructions (including features)
CTF逆向基础
Pytorch 1.12 was released, officially supporting Apple M1 chip GPU acceleration and repairing many bugs
Norgen AAV提取剂盒说明书(含特色)
14、Transformer--VIT TNT BETR
Document method
Applet event binding
CVPR 2022 | common 3D damage and data enhancement
Frequent MySQL operations cause table locking problems
ProSci LAG-3 重组蛋白说明书
重上吹麻滩——段芝堂创始人翟立冬游记
Abnova丨E (DIII) (WNV) 重组蛋白 中英文说明书
phpstudy小皮的mysql点击启动后迅速闪退,已解决
PHP反序列化+MD5碰撞
挖财商学院给的证券账户安全吗?可以开户吗?
清除app data以及获取图标