这是我参与「第五届青训营 」笔记创作活动的第十八天
RDBMS
基本情况
SQL语言
- 语法风格接近自然语言
- 高度非过程化
- 面向集合的操作方式
- 语言简洁,易学易用。
关键技术
SQL的执行过程
SQL引擎
- 解析器 词法分析、语法分析、语义分析
- 优化器
- 基于规则的优化
- 基于代价的优化
- LLVM动态编译执行技术
存储引擎
innoDB
- 通过LRU算法管理内存空间
事务引擎
- Atomicity与Undolog
- Isolation与锁
- 一致性一般由业务上实现
- Durability与redolog
- redo log是物理日志,记录的是页面的变化磁盘前发生故障,重启MySQL后会根据redo log重做。
实践案例
大流量
Sharding
- 问题背景
- 单节点写容易成为瓶颈
- 单机数据容量上限
- 解决方案
- 业务数据进行水平拆分
- 代理层进行分片路由
- 实施效果
- 数据库写入性能线性扩展
- 数据库容量线性扩展
流量突增
- 问题背景
- 活动流量上涨.
- 集群性能不满足要求
- 解决方案
- 扩容DB物理节点数量
- 利用影子表进行压测
- 实施效果
- 数据库集群提供更高的吞吐
- 保证集群可以承担预期流量
代理连接池
- 问题背景
- 突增流量导致大量建联
- 大量建联导致负载变大,延时上升
- 解决方案
- 业务侧预热连接池
- 代理侧预热连接池
- 代理侧支持连接队列
- 实施效果
- 避免 DB 被突增流量打死
- 避免代理和 DB 被大量建联打死
稳定性和可靠性
-
3AZ高可用
-
三机房部署
- 机房级别容灾
- 机房级别流量调度
-
proxy
- 读写分离,
- 分库分表限流,流量调度
-
监控报警
- 实时监控集群运行状态
- 提前上报集群风险
-
HA管理