MySQL - 深入理解RDBMS | 青训营笔记

69 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第16天。

一、课程目录

  • 经典案例
  • 发展历史
  • 关键技术
  • 企业实践

二、课程内容

1、RDBMS ACID 事务

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

ACID:

  • 原子性(Atomicity):事务是一个不可再分割的工作单元。事务中操作要么都发生,要么都不发生。
  • 一致性(Consistency):数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
  • 隔离性(Isolation):多个事务并发,事务之间不相互影响。
  • 持久性(Durability):事务完成后不会被回滚,持久保存。

红包雨 与 ACID

  • 抖音账户-1亿后服务器挂了,用户没有+1亿。 原子性
  • 抖音只有0.5亿,却执行了-1亿。 一致性(合法)
  • 同时进行+1亿,只+了1亿 隔离性
  • 操作没有写到磁盘上,服务器挂了 持久性

红包雨 与 高并发、高可靠

2、发展历史

  • 前DBMS时代-人工管理
  • 前DBMS时代-文件系统
  • DBMS
    • 网状数据库:数据作为节点,节点与节点之间多对多的关系
    • 层次数据库:树形结构,节点一对多关系
    • 关系数据库:实体及实体间关系都通过二维表结构表示

3、关键技术

3.1 SQL引擎

  • Parser:解析器一般分为词法分析、语法分析、语义分析等步骤。
  • Optimizer:优化器
    • 基于规则的优化(RBO Rule Base Optimizer)
    • 基于代价的优化(CBO Cost Base Optimizer)
  • Executor:火山模型:逐层向下调用,数据逐层向上返回
  • 存储引擎-InnoDB
  • 事务引擎
    • Atomicity 与 Undo Log:实现事务回滚,保证原子性
    • Isolation 与 锁
    • Durability 与 Redo Log

4、 企业实践

  • 大流量-Sharding

    • 单节点写容易成为瓶颈,单机数据容量有限
    • 解决方案:业务数据水平拆分,代理层进行分片路由
  • 流量突增-扩容

    • 活动流量上涨,集群性能不满足要求
    • 扩容DB物理节点数量,利用影子表进行压测;预先缓存连接池
  • 稳定性&可靠性

    • 删库跑路、机房断电
    • 3AZ高可用:三个不同的城市建立机房,机房同步数据、监控
    • HA管理

杨洋老师讲得真好!