这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记
特性
事务(Transaction)是由一组SQL语句组成的一个程序执行单元(Unit),需要满足ACID特性:
- A(Atomicty)原子性:事务不可再分
- C(Consistency)一致性:数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性
- I(Isolation)隔离性:事务之间相互不影响
- D(Durability):事务产生的更改是持久的,并不会被回滚
需要满足:高并发、高可靠
发展历史
前DBMS时代:人工管理、文件系统
DBMS时代:网状数据库、层次数据库、关系数据库
SQL语言:将关系数据库的12条准则的数学定义以简单的关键字语法表现出来
关键技术
一条SQL需要经过SQL引擎、事务引擎、存储引擎到后面的数据
SQL引擎做3件事:
- 查询解析:将文本解析成结构化数据,即抽象语法树(AST)。包括词法分析、语法分析、语义分析等步骤
- 查询优化:根据AST优化产生最优执行计划(Plan Tree)。有基于规则的优化、基于代价的优化等
- 查询执行:根据查询计划,完成数据读取、处理、写入等操作。如火山模型
事务引擎:处理事务一致性、并发、读写隔离等
- Undo Log:是逻辑日志,记录数据的增量变化。必要时事务回滚,保证原子性,实现多版本并发控制(MVCC),解决读写冲突和一致性读的问题
- 锁:多个并发事务访问同一条记录,靠锁保证互不影响。
- MVCC:实现读写互不阻塞、降低死锁概率、实现一致性读
- Redo Log:实现持久性。相比事务提交页面前写盘,故障时根据redo log重做更优
存储引擎:内存中的数据缓存区、数据文件、日志文件