MySQL - 深入理解RDBMS | 青训营笔记

42 阅读3分钟

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

1.RDBMS事务ACID

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

ACID

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

2.DBMS数据模型

网状模型层次模型关系模型
优势能直接描述现实世界 存取效率较高结构简单 查询效率高 可以提供好的完整性支持实体及实体间的联系都通过二维表结构表示 可以方便的表示M:N关系 数据访问路径对用户透明
劣势结构复杂 用户不易使用 访问程序设计复杂无法表示M:N的关系 插入删除限制多 遍历子节点必须经过父节点 访问程序设计复杂关联查询效率不够高 关系必须规范化

SQL语言

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

3.关键技术

SQL引擎

查询解析: SQL语言接近自然语言,入门容易。但是各种关键字、操作符组合起来,可以表达丰富的语意。因此想要处理SQL命令,首先将文本解析成结构化数据,也就是抽象语法树(AST)。

查询优化:SQL是一门表意的语言,只是说“要做什么”,而不说“怎么做”。所以需要一些复杂的逻辑选择“如何拿数据”,也就是选择一个好的查询计认划。优化器的作用根据AST优化产生最优执行计划(Plan Tree) 。

查询执行:根据查询计划,完成数据读取、处理、写入等操作。

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

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

image.png

image.png

所有的代码在执行之前,都存在一个解析编译的过程,差异点无非在于是静态解析编译还是动态的。

SQL语言也类似,在SQL查询执行前的第一步就是查询解析。

词法分析:将一条SQL语句对应的字符串分割为一个个token,这些token可以简单分类。

语法分析:把词法分析的结果转为语法树。根据tocken序列匹配不同的语法规则,比如这里匹配的是update语法规则 类似的还有insert、delete、select、create、drop等等语法规则。根据语法规则匹配SQL语句中的关键字,最终输出一个结构化的数据结构。

语义分析:对语法树中的信息进行合法性校验。

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png

image.png


4.企业实践

image.png

image.png

image.png

image.png

image.png