这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天

一、基础

1.1 事务的ACID

  • 原子性(Atomicity):事务是一个不可再分割的工作单元, 事务中的操作要么都发生,要么都不发生
  • 一致性(Consistency):数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性
  • 隔离性(Isolation):多个事务并发访问时,事务之间是隔离的一个事务不应该影响其它事务运行效果
  • 持久性(Durability):在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

1.2 SQL语言

SQL功能极强,但由于设计巧妙,语言十分简洁,完成数据定义、数据操纵、数据控制的核心功能只用了9个动词: CREATE、ALTER、 DROP、 SELECT、INSERT、UPDATE、DELETE、GRANT、REVOKE。且SQL语言语法简单,接近英语口语,因此容易学习,也容易使用。

  • 语法风格接近自然语言
  • 高度非过程化
  • 面向集合的操作方式
  • 语言简洁,易学易用

二、关键技术

2.1 SQL引擎

2.1.1 Parser

解析器(Parser)一般分为词法分析( Lexical analysis)、语法分析( Syntax analysis )、语义分析( Semantic analyzer )等步骤。

  • 词法分析:将一条SQL语句对应的字符串分割为一个个token, 这些token可以简单分类。
  • 语法分析:把词法分析的结果转为语法树。根据token序列匹配不同的语法规则,根据语法规则匹配SQL语句中的关键字,最终输出一个结构化的数据结构。
  • 语议分析:对语法树中的信息进行合法性校验

2.1.2 Optimizer

基于规则优化(RBO)

  • 条件化简
  • 表连接优化:总是小表先进行连接
  • Scan优化:唯一索引、普通索引、全表扫描

数据库索引:是数据库管理系统中辅助数据结构,以协助快速查询、更新数据库表中数据。目前数
据库中最常用的索引是通过B +树实现的。

基于代价优化(CBO)

一个查询有多种执行方案,CBO会选择其中代价(时间、io、cpu、net、mem...)最低的方案去真正的执行。

2.1.3 Executor

火山模型、向量化、编译执行(LLVM动态编译执行技术)

参考链接

RDBMS 基本情况介绍 - 掘金 (juejin.cn)

[RDBMS 关键技术分析 - 掘金 (juejin.cn)](

最后修改:2023 年 06 月 07 日
如果觉得我的文章对你有用,请随意赞赏