From 8e2a45487b95901c2e301428d48ce6b57a4a34d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9E=97=E4=BC=9F?= Date: Tue, 16 Apr 2024 15:27:27 +0800 Subject: [PATCH] Update database architecture blog --- .../index.md | 32 +++++++++++++++++-- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/content/blog/2024-03-26-architecture-of-a-database-system-paper/index.md b/content/blog/2024-03-26-architecture-of-a-database-system-paper/index.md index 1a56807..dffe8e4 100644 --- a/content/blog/2024-03-26-architecture-of-a-database-system-paper/index.md +++ b/content/blog/2024-03-26-architecture-of-a-database-system-paper/index.md @@ -8,7 +8,7 @@ date = 2024-03-26 ## DBMS 主要组件 main-components-of-dbms -Process Manager 并非单指分配进程,而是根据 DBMS 实际实现的进程模型,分配进程或线程。其作用之一 Admission Control 指是否立即处理该查询,或是等待系统有足够资源时再处理。 +注:Process Manager 并非单指分配进程,而是根据 DBMS 实际实现的进程模型,分配进程或线程。Admission Control 指是否立即处理该查询,或是等待系统有足够资源时再处理。 ## 进程模型 ### 每个 DBMS Worker 一个进程 @@ -129,7 +129,7 @@ ACID - 持久性:出现故障不会丢失更新 三种主要的并发控制技术 -1. 严格两阶段锁(2PL):读数据需读锁,写数据需排它锁。事务拥有的锁在事务结束时释放 +1. 严格两阶段锁(2PL):读数据需读锁,写数据需排他锁。事务拥有的锁在事务结束时释放 2. 多版本并发控制(MVCC):为过去某一时间点的数据状态保存副本 3. 乐观并发控制(OCC):事务提交时检测读写历史来判断是否冲突,冲突则回滚 @@ -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. 读事务需要为下一个元组添加共享锁 + +## 共享组件 +- 目录管理器 + - 管理元数据(用户/数据库/表/列/索引等),元数据以表形式存储在数据库中 +- 内存分配器 +- 磁盘管理器 +- 备份服务 + - 物理备份 + - 基于触发器的备份 + - 基于日志的备份 +- 管理、监控和工具 \ No newline at end of file