RDBMS | 青训营笔记

62 阅读2分钟

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

RDBMS

基本情况

SQL语言

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

关键技术

SQL的执行过程

image.png

image.png

SQL引擎

  • 解析器 词法分析、语法分析、语义分析
  • 优化器
    • 基于规则的优化
    • 基于代价的优化
    • LLVM动态编译执行技术

存储引擎

innoDB

  • 通过LRU算法管理内存空间

事务引擎

  • Atomicity与Undolog
  • Isolation与锁
  • 一致性一般由业务上实现
  • Durability与redolog
    • redo log是物理日志,记录的是页面的变化磁盘前发生故障,重启MySQL后会根据redo log重做。

实践案例

大流量

Sharding

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

流量突增

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

代理连接池

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

稳定性和可靠性

  • 3AZ高可用

  • 三机房部署

    • 机房级别容灾
    • 机房级别流量调度
  • proxy

    • 读写分离,
    • 分库分表限流,流量调度
  • 监控报警

    • 实时监控集群运行状态
    • 提前上报集群风险
  • HA管理