深入理解RDBMS | 青训营笔记

67 阅读3分钟

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

深入理解RDBMS

经典案例--比如抖音红包雨

  • RDBMS
    • 事务(transaction):是由一组SQL语句组成的一个程序执行单元,它需要满足ACID特性.
    • ACID
      • A原子一致性:事务是一个不可再分割的工作单元,事物中的操作要么都发生,要么都不发生
      • C一致性:数据库事物不能破坏关系数据的完整性以及业务逻辑上的一致性
      • I隔离性:多个事物并发访问后,事物之间是隔离的,一个事物不应该影响其他事物运行结果
      • D持久性:在事物完成以后,该事物所作的更改便持久的保存在数据库中,并不会被回滚

红包雨与几个高要求

  • 高并发
    • 全国上亿人同时开抢红包,因此需要高并发
  • 高可靠
    • 在这样大的活动下,高可靠显然也很重要,不然服务器挂了短时间处理不过来

发展历史

人工管理 ---》 文件系 ----》网状模 ---》层次模 ----》关系模

  • RDBMS模型比对
    • 网状模型

      • 优势:能直接描述现实世界
      • 存取效率高
      • 劣势:结构复杂
      • 用户不易使用
      • 访问程序设计复杂
    • 层次模型

      • 优势:结构简单
      • 查询效率高
      • 可以提供较好的完整性支持
      • 劣势:无法表示M:N的关系
      • 插入,删除限制多
      • 遍历里子节点必须经过父节点
      • 访问程序设计复杂
    • 关系模型

      • 优势:实体与实体间的联系都通过二维表结构表示
      • 可以方便的表示M:N关系
      • 数据访问路径对用户透明
      • 劣势:关联查询效率不够高
      • 关系必须规范化

在关系模型之后,SQL语句诞生

  • 语法风格接近自然语言
  • 高度非过程化
  • 面向集合的操作方式
  • 语言简介,易学易用

关键技术

引擎

  • Parser
    • 词法分析
    • 语法分析
    • 语义分析
  • Optimizer(优化器
    • 进行基于规则的优化
      • 条件化简
      • 表连接优化
      • Scan优化
    • 基于代价的优化
  • Executor
    • 火山模型
    • 向量化
  • 存储引擎 InnoDB
  • 存储引擎 Buffer pool
  • 存储引擎 page
  • 存储疫情 B+Tree
  • 事物引擎
    • atomicity与Undo
      • Undo log 是逻辑日志,记录的是数据的增量变化。利用Undo Log可以进行事物回滚,从而保证事物的原子性。同时也实现了多版本MVCC
    • Isolation与MVCC
      • MVCC的意义
        • 读写互不阻塞
        • 降低死锁概率
        • 实现一致性度
      • Durability 与 Redo Log
        • 如何保证事务结束后对数据的修改永久保存?
        • 1.事物提交前页面写盘

企业实践

大流量

Sharding

  • 问题
    • 单节点写容易成为瓶颈
    • 单机数据容量上限
  • 解决方案
    • 业务数据进行水平拆分
    • 代理层进行分片路由
  • 实施效果
    • 数据库写入性能线程拓展
    • 数据容量线性拓展

扩容

  • 问题
    • 活动流量上涨
    • 集群性能不满足要求
  • 解决方案
    • 扩容DB物理结点数量
    • 利用影子表进行压测
  • 实施效果
    • 数据库集群提供更高的吞吐
    • 保证集群可以承担预期流量

代理连接池

  • 问题
    • 突增流量导致大量建联
    • 大量建联导致负载变大,延时上升
  • 方案
    • 业务侧预热连接池
    • 代理测预热连接池
    • 代理测支持连接队列
  • 效果
    • 避免DB被突增流量打死
    • 避免代理和DB被大量建联打死

稳定性&可靠性

  • 三机房部署
  • proxy
  • 监控报警
  • HA

HA

  • 问题
    • db所在机器异常宕机
    • db结点异常宕机
  • 解决方案
    • ha服务监管,切换宕机结点
    • 代理支持配置热加载
    • 代理自动屏蔽宕机读结点
  • 实施效果
    • 读结点宕机秒级恢复
    • 写结点宕机30s内恢复服务