这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天
经典案例
通过红包雨的案例,介绍ACID是什么:
- 原子性:事务是不可分割的,事务中的操作要么全部发生,要么都不发生
- 一致性:数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性
- 隔离性:多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。
- 持久性:在事务完成以后,该事务所对数据库所做的更改便持久的保存在数据库之中,并不会被回滚。
发展历史
数据库发展最初过程中,诞生过3种数据模型,最终关系型模型成为了应用最为广泛的数据库模型。
- 网状模型:用有向图表示实体和实体之间的联系的数据结构模型称为网状数据模型。
- 优点:能直接描述现实世界 存取效率较高
- 缺点:结构复杂 用户不易使用 访问程序设计复杂
- 层次模型:层次数据模型是用树状<层次>结构来组织数据的数据模型。
- 优点:结构简单 查询效率高 可以提供较好的完整性支持
- 缺点:无法表示M:N的关系 插入、删除限制多 遍历子节点必须经过父节点 访问程序设计复杂
- 关系模型:使用表格表示实体和实体之间关系的数据模型称之为关系数据模型。
- 优点:实体及实体间的的联系都通过二维表结构表示 可以方便的表示M:N关系 数据访问路径对用户透明
- 缺点:关联查询效率不够高 关系必须规范化
关键技术
SQL执行过程
SQL引擎又分为Parser、Optimizer、Executor几个部分。SQL语句的执行过程基本这三个依次执行。
SQL引擎
SQL引擎包括了:
- Paser:经过词法分析、语法分析生成语法树,然后对语法树进行合法性校验。
- Optimizer:根据Parser产生的语法树,根据规则或者代价产生执行计划树。
- Executor:根据计划树进行执行,常见的执行方式是火山模型。