Skip to content

Commit

Permalink
Update database architecture blog
Browse files Browse the repository at this point in the history
  • Loading branch information
lewiszlw committed Apr 16, 2024
1 parent ca7d6d3 commit 8e2a454
Showing 1 changed file with 29 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ date = 2024-03-26
## DBMS 主要组件
<img src="main-components-of-dbms.png" alt="main-components-of-dbms" width="600"/>

Process Manager 并非单指分配进程,而是根据 DBMS 实际实现的进程模型,分配进程或线程。其作用之一 Admission Control 指是否立即处理该查询,或是等待系统有足够资源时再处理。
注:Process Manager 并非单指分配进程,而是根据 DBMS 实际实现的进程模型,分配进程或线程。Admission Control 指是否立即处理该查询,或是等待系统有足够资源时再处理。

## 进程模型
### 每个 DBMS Worker 一个进程
Expand Down Expand Up @@ -129,7 +129,7 @@ ACID
- 持久性:出现故障不会丢失更新

三种主要的并发控制技术
1. 严格两阶段锁(2PL):读数据需读锁,写数据需排它锁。事务拥有的锁在事务结束时释放
1. 严格两阶段锁(2PL):读数据需读锁,写数据需排他锁。事务拥有的锁在事务结束时释放
2. 多版本并发控制(MVCC):为过去某一时间点的数据状态保存副本
3. 乐观并发控制(OCC):事务提交时检测读写历史来判断是否冲突,冲突则回滚

Expand All @@ -143,4 +143,30 @@ ACID

除了 ANSI SQL 定义的隔离级别外,还有其他的隔离级别:游标稳定,快照隔离,读一致。

日志
数据库标准恢复机制采用 WAL 日志,为优化性能
- 采用 DIRECT, STEAL/NOT-FORCE 模式运行
1. 数据项原地更新
2. 事务未提交时,其修改的缓冲页可以被刷盘
3. 当事务提交时,缓冲池不必强制刷盘
- 采用逻辑操作和物理操作混合的日志模式(逻辑日志用于撤销,物理日志用于重做)

索引 B+ 树并发控制
- Latch-coupling 方案(Crabing 协议)
- Right-link 方案

解决幻读
- 谓词锁:锁定原始查询谓词所表示的逻辑区域(代价高)
- next-key 锁
1. 索引插入操作需要为大于其 key 的下一个元组分配排他锁
2. 读事务需要为下一个元组添加共享锁

## 共享组件
- 目录管理器
- 管理元数据(用户/数据库/表/列/索引等),元数据以表形式存储在数据库中
- 内存分配器
- 磁盘管理器
- 备份服务
- 物理备份
- 基于触发器的备份
- 基于日志的备份
- 管理、监控和工具

0 comments on commit 8e2a454

Please sign in to comment.