这是我参与「第五届青训营 」伴学笔记创作活动的第 16 天。
一、发展历史
1、人工管理:绳结、账本等 2、文件系统 3、DBMS时代:网状数据库、层次模型、关系型数据库
网状数据库
层次模型
每个子节点只能有一个父节点,不是网状,而是树状了。
关系模型
SQL语言
二、关键技术
一条SQL的一生
语法解析器:Parser
优化器:Optimizer
执行器:Executor
SQL引擎
1.Parser
明确目的地。
2.Optimizer
选择到达目的地的最优路线。 1.基于规则的优化RBO
2.基于代价的优化CBO 一般都是基于代价的优化
3.Executor
火山模型: 从Plan开始,到存储引擎。
向量化:
编译执行:
存储引擎
InnoDB
内存态:做一些数据缓存
磁盘上:事务上常用的数据存储
- Buffer Pool
事务引擎
ACID
A:原子性 C: 一致性 I:隔离性 D:持久性
原子性和Undo Log
事务回滚:通过undo log
undo log记录了执行的SQL命令的反操作。
隔离性和锁
读读:共享锁 Share Lock 写写:排它锁 Exclusive Lock 读写:MVCC
MVCC
持久性和Redo Log
随机IO:随机访问能力要求高 写放大:16kb页面的大小
三、企业实践
大流量问题
解决方案:sharding:分库分表
- 业务数据进行水平拆分(如按照hash方式)
- 代理层分片路由
突增流量
扩容 binlog 代理连接池
稳定性&可靠性
HA管理