RDBMS笔记 | 青训营笔记

69 阅读4分钟

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

事务ACID

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

  1. 原子性(Atomicity):事务是一个不可再分割的工作单元, 事务中的操作要么都发生,要么都不发生

要么同时成功,要么同时失败

  1. 一致性(C onsistency):数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性

操作前提合法,一个有效状态变为另外一个有效状态

  1. 隔离性( solation):多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果

两个操作对一个状态并发进行时,应当互不影响,表现形式为串行

  1. 持久性(Durabillitv):在事各完成以后该事各 所对数据库所作的重改便持久的保存在数据库之中并不会被回滚

操作成功的状态会永久记录下来,哪怕服务器宕机

发展历史

  • 人工管理

人工的形式进行数据记录和管理

  • 文件系统

磁盘驱动器的发明,数据存储加入磁盘时代,数据管理直接通过文件系统来实现

  • DBMS

按照某种数据模型来组织、存储和管理数据的仓库

  1. 网状数据库(网状原理和方法存储数据) 网状数据模型是以记录类型为结点的网络结构,两个记录类型之间的值可以是多对多的联系,例如一 门课程被多个学生修读,一个学 生选修多门课程。一个或多个上级结点, 两个结点之间甚至可以有多种联系,例如教师与“课程两个记录类型,可以有“任课和辅导两种联系,称之为复合链

  2. 层次数据库(按记录存取数据)

层次数据库就是树结构。每棵树都有且仅有一个根节点,其余的节点都是非根节点。每个节点表示一-个记录类型对应与实体的概念,记录类型的各个字段对应实体的各个属性。各个记录类型及其字段都必须记录

  1. 关系数据库(行和列的顺序存储数据)

使用表格表示实体和实体之间关系的数据模型称之为关系数据模型。 关系数据模型中,无论是是实体、还是实体之间的联系都是被映射成统的关系 张二维表,在关系模型中,操作的对象和结果都是一张二维表,它由行和列组成 关系型数据库可用于表示实体之间的多对多的关系,只是此时要借助第三个关系-表,来实现多对多的关系

sql语言

  1. 高度非过程化

用户只需提出”做什么”,而不必指明“怎么做”,因此用户无须了解存取路径,存取路径的选择以及SQL语句的操作过程由系统 ;自动完成。这不但大大减轻了用户负担,而且有利于提高数据独立性

  1. 面向集合的操作方式

SQL采用集合操作方式,不仅查找结果可以是元组的集合,而且-次插入、删除、更新操作的对象也可以是元组的集合

  1. 语言简洁,易学易用

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

一条sql的执行过程

  1. 解析编译,查询解析 词法解析:将一条SQL语句对应的字符串分割为一一个个token,这些token可以简单分类

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

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

  1. sql 引擎,optimizer

条件化简

总是小表先进行连接

scan扫描,唯一索引,普通索引,全表扫描

据库中最常用的索弓|是通过B +树实现的

基于代价的优化,选择代价最小的执行

  1. SQL引擎一Executor

image.png 4. 存储引擎

image.png

image.png

image.png

image.png