学习路径:1. 基础概念:理解数据模型、关系 algebra 和 SQL 语法;2. 存储与索引:掌握 B+树、哈希表和文件组织;3. 查询优化:学习成本模型和查询重写;4. 事务与并发:ACID 属性、锁机制和 MVCC;5. 分布式系统:分片、主从复制和 CAP 定理。实践:用 PostgreSQL 或 MySQL 搭建实验环境,编写查询和模拟并发场景。通过这个路径,逐步掌握核心概念。
第一篇内容
数据库系统原理的核心是数据管理和查询处理。从关系模型开始,实体-关系图 (ER 图) 用于设计 schema,然后转换为关系模式。规范化理论确保无冗余:1NF、2NF、3NF 到 BCNF。物理存储包括堆文件、顺序文件和聚簇索引。
第二篇内容
索引是数据库性能的关键。B+树适合范围查询,叶子节点存数据指针;哈希索引用于等值查询。位图索引适用于低基数列。多级索引减少 I/O。选择索引时考虑基数、更新频率和查询类型。
第三篇内容
查询优化器使用统计信息估算选择性。启发式优化:选择-投影-连接顺序。从统计图生成备选计划,计算总成本选最优。动态规划用于连接枚举。提示 (hint) 可覆盖优化器决策。
第四篇内容
事务 ACID:原子性靠 undo/redo 日志;一致性由约束和触发器;隔离性用 2PL (两阶段锁) 或 MVCC;持久性通过 WAL (预写日志)。死锁检测用等待图,预防用超时或排序。
第五篇内容
分布式数据库:主从复制异步更新从库;分片 (sharding) 按键分区数据。共识算法如 Paxos/Raft 确保强一致。CAP 定理:分区时选 CP 或 AP。新 SQL 如 CockroachDB 支持分布式事务。
第六篇内容
恢复机制:ARIES 日志结构 (分析、重做、撤销)。检查点减少恢复时间。崩溃恢复步骤:重做到检查点后,撤销活跃事务。备份策略:全备 + 增量 + 日志归档。
FAQ
Q: 什么是数据库规范化,为什么重要?
A: 规范化消除冗余和异常,如插入、更新、删除异常。从 1NF 开始逐步消除依赖。
Q: B+树和 B树区别?
A: B+树非叶子不存数据,叶子链表支持范围扫描,更适合数据库索引。
Q: MVCC 如何实现快照隔离?
A: 每个事务见版本链开始时的快照,避免锁阻塞读。
Q: 如何学习数据库实践?
A: 安装 MySQL/PostgreSQL,建表查询,模拟 TPC-C 工作负载测试并发。