深入理解RDBMS | 青训营笔记

68 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第3篇笔记

3-1.jpg

特性

事务(Transaction)是由一组SQL语句组成的一个程序执行单元(Unit),需要满足ACID特性:

  • A(Atomicty)原子性:事务不可再分
  • C(Consistency)一致性:数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性
  • I(Isolation)隔离性:事务之间相互不影响
  • D(Durability):事务产生的更改是持久的,并不会被回滚

需要满足:高并发、高可靠

发展历史

前DBMS时代:人工管理、文件系统

DBMS时代:网状数据库、层次数据库、关系数据库

SQL语言:将关系数据库的12条准则的数学定义以简单的关键字语法表现出来

关键技术

一条SQL需要经过SQL引擎、事务引擎、存储引擎到后面的数据

SQL引擎做3件事:

  1. 查询解析:将文本解析成结构化数据,即抽象语法树(AST)。包括词法分析、语法分析、语义分析等步骤
  2. 查询优化:根据AST优化产生最优执行计划(Plan Tree)。有基于规则的优化、基于代价的优化等
  3. 查询执行:根据查询计划,完成数据读取、处理、写入等操作。如火山模型

事务引擎:处理事务一致性、并发、读写隔离等

  • Undo Log:是逻辑日志,记录数据的增量变化。必要时事务回滚,保证原子性,实现多版本并发控制(MVCC),解决读写冲突和一致性读的问题
  • 锁:多个并发事务访问同一条记录,靠锁保证互不影响。
  • MVCC:实现读写互不阻塞、降低死锁概率、实现一致性读
  • Redo Log:实现持久性。相比事务提交页面前写盘,故障时根据redo log重做更优

存储引擎:内存中的数据缓存区、数据文件、日志文件