数据库系统
SQL、索引、事务、B+树 — 数据持久化的基石
知识结构
学习路径
数据库(Database, DB)是持久化存储和管理数据的系统——相比文件系统,它提供了高效查询、并发控制、故障恢复、数据一致性等能力
实体关系模型(Entity-Relationship Model)是用图形化的方式描述现实世界的数据结构——实体是"东西",关系是"联系",是数据库设计的第一步
关系模型(Relational Model)把数据抽象为"关系"(表),用集合论的运算(选择、投影、连接)来操作数据——SQL 就是基于关系代数设计的
SQL(Structured Query Language)是操作关系数据库的标准语言——DDL 定义表结构,DML 操作数据
连接(JOIN)把多个表的数据按关联条件合并,子查询(Subquery)把一个查询的结果作为另一个查询的输入——它们是 SQL 最强大的功能
视图是"虚拟表",索引加速查询,事务保证多步操作的原子性——它们是 SQL 进阶的三大武器
函数依赖(Functional Dependency)描述表中列之间的"决定关系"——如果学号确定,姓名就唯一确定,就说"学号 → 姓名"
范式(Normal Form)是评价关系表设计"好坏"的标准——范式越高,数据冗余越少,更新异常越少
B+ 树是关系数据库最常用的索引结构——它是多路平衡查找树,所有数据都在叶子节点,内部节点只存"路标",适合磁盘块存储和大规模范围查询
查询优化器(Query Optimizer)把 SQL 翻译成执行计划——选择索引、决定 JOIN 顺序、估算代价——让同样的查询跑得更快
ACID 是数据库事务的四大特性——原子性(要么全做要么全不做)、一致性(数据总是正确)、隔离性(并发事务互不干扰)、持久性(提交了就永久保存)
隔离级别在并发性能和正确性之间做权衡——级别越高数据越安全,但并发性能越低。脏读、不可重复读、幻读是隔离级别要解决的三个问题
WAL(Write-Ahead Logging)是数据库故障恢复的核心——先写日志再写数据。Undo Log 回滚未提交的事务,Redo Log 重做已提交但未写入磁盘的事务