这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记.
概览:
存储系统:
- 块存储,文件存储,对象存储,key-value存储 数据库系统:
- 关系型数据库,非关系型数据库 分布式架构
- 数据分布策略,数据复制协议,分布式事务算法
关系型数据库: 事务:一组由SQL语句组成的一个程序执行单元,需要满足ACID特性。
ACID:为了保证数据安全和数据一致性
一条SQL的执行流程:
首先从手机上发出操作,后台路由服务器收到请求,收到后发送一条SQL到数据库,数据库收到后会进行解析,Parser(语法解析器),通过AST生成语法器,给到优化器Optimizer,给Executor发送语法树,让它执行,再到文件种读取数据,返回数据,同时进行写入日志,执行器会把数据一步步再返回给用户。
SQL引擎-Parser
分为词法分析,语法分析,语义分析等步骤
SQL引擎-Optimizer
Optimizer(优化器) 提高机器处理程序的效率,让一条sql变得更易于执行或者是叫做性能更高 一个查询有多种执行方案,CBO会选择其中代价最低的方案去真正的执行。 代价:时间、io、cpu、net、mem
SQL引擎-Executor
执行器 将优化过后的数据进行执行
存储引擎-InnDB
存储引擎-Buffer Pool
存储引擎-Page
存储引擎-B+Tree
使用二分法快速定位到对应的槽,然后再遍历该槽对应分组的记录即可快速找到指定的记录
事务引擎
Isolation与MVCC MVCC的意义:读写互不阻塞; 降低死锁概率 实现一致性读。
Undo Log在MVCC的作用:
- 每一个事务有一个单增的事务ID;
- 数据页的行记录种包含了DB_ROW_ID,DB_TRX_ID,DB_ROLL_PTR;
- DB_ROLL_PTR将数据行的所有快照记录都通过链表的结构串联了起来。
Durability与Redo Log
如何保证事务结束后,对数据的修改永久的保存? 1:事务提交前页面写盘 2:利用物理日志。