DuuCloud.com-IT工程师的文库之家PolarDB 高性能低成本揭秘:
面向云存储的架构优化
陈宗志
DuuCloud.com-IT工程师的文库之家01
CloudJump :面向计存分离架构优化
DuuCloud.com-IT工程师的文库之家• 海量存储能力;
• 计算、存储独立高弹性能力;
• 服务高可用,数据高可靠;
• 极致的性能;
• Serverless 、 pay - as - you - go ;
• 快速备份、恢复
• ……
• 实现云原生能力的标准范式:
计存分离架构
DB node DB node
sync
Storage Node Storage Node Storage Node
Network I/O
Local
I/O
OS Cache
Local SSDs
DB
计
算
存
储
分
离
架
构
云
原
生
数
据
库
标
准
能
力
DuuCloud.com-IT工程师的文库之家挑战 系统关键点 问题
IO 延迟高,长尾抖动多
Redo Log 串行日志顺序写入 , 延迟高 , 单条 SQL 写入慢
Log replay 串行日志读取 , 应用效率低 , Crash Recovery 慢
Data read 读 取 IO 延迟高 , 用户范围查询慢
Synchronization 写入 IO 持有 Latch, Latch 时间增长 , 并发读写性能下降
带宽利用率低, I/O 热点访
问
Data write
分布式存储提供更大带宽 , 数据库无法充分利用 ,
吞吐不符合预期
Data read
多节点 cache 一致性问题 Page cache
为了避免多节点 cache coherence 问题 ,
buffer IO 无法使用
低 I/O 隔离 性 I/O scheduling
I/O 链路更长,存在更多的耦合部分,
并发情况下不同 I/O 更容易相互影响
DB node DB node
sync
Storage Node Storage Node Storage Node
Network I/O
计算存储分离架构的性能挑战
DuuCloud.com-IT工程师的文库之家◼ I/O 延迟高 , 长尾抖动多
Redo 分片
逻辑预读
无锁刷脏
启动快速验证
◼ 多节点 cache 一致性
Padding Direct IO
引擎层 I/O 请求优化
◼ I/O 带宽利用率低 , 热点访问
Multi - queue AIO
并行日志应用 & 恢复
Random Redo
Redo cache
锁优化索引 PolarIndex
◼ 低 I/O 隔离性
I/O 打标与优先级调度
• 优化云存储本身
硬件升级( RDMA 、 NVM )
软件栈优化( OS - bypass )
• 优化 DB 架构 / 引擎
多层 cache
log as data 架构
DB 引擎针对性适配
面向计算存储分离架构的引擎优化
DuuCloud.com-IT工程师的文库之家• Random Write Redo
大字段的 redo 日志多并发分散写入存储 , 尽可能实
现存储多条带利用 , 有效提升写入场景下系统 redo 吞吐能
力 , 大幅提高用户写入性能 。
游戏行业某头部客户 80 k Blob 写入场景从 190 MB => 500 MB
面向计算存储分离架构的引擎优化T x 1 m tr1 -3 m lo g _ p 1 m lo g _ p n
T x 2 m lo g _ p 1 m lo g _ p 2
…
L o g B u ffer 1
L o g B u ffer 2
L o g B u ffer n
…
P e rsistent log s
B uffe red logs
U n used b uffe r
m tr2 -1 P en din g lo gs
…
A
s
yn
c
W
rite
rs
W o rk er
G P LS N
L P L S N s B R L s L B L S N s
LinkB uf
Partition 0
Partition 1
Partition n
…
A la rg e lo g I/O re q u e s t
4 K B
a lig n e d
1 6 K B
s lice d
…
hea der
traile r
…
…
b lan k
L o g B u ffe r - P a rtitio n 1
S licin g
F ile1
P art 1
C hunkS erver1
F ile1
P a rt 2
C hunkS erver2
P a ra lle l I/O s
DuuCloud.com-IT工程师的文库之家针对远端数据访问延时多优化
• Shadow page (无锁刷脏)
通过 shadow 页去除 write I/O 期间 page 锁占有 ,消除热点场景长
I/O 时的 page 独占,提升写操作并发度
• 逻辑预读
在特定扫描逻辑下预读数据页(例如对于涉及二级索引和非覆盖列
的回表操作,采用 Batched Key 预读),利用云存储高聚合带宽,提前
缓存数据页减少用户访问延时
面向计算存储分离架构的引擎优化主 键 触 发 预 读 逻 辑 异 步 并 发 预 读
二 级 索 引 触 发 预 读 逻 辑 异 步 并 发 预 读
C h u n k C h u n k
D a ta F ile
C h u n k
C h u n k C h u n k
D a ta F ile
C h u n k L o c k -fre e fo r w rite
S h ado w pag e
C h u n k
D a ta F ile
刷 脏 任 务
DuuCloud.com-IT工程师的文库之家提升并发度,减小独占资源临界区
加锁粒度小: SMO 不持有 Index 锁,允许多个 SMO 并行执行;
加锁时间短:子节点分裂后才拿父节点的锁,尽可能缩短加锁时间
面向计算存储分离架构的引擎优化
• 高性能索引 PolarIndex
去 除 在 SMO 、 BLOB 等 操 作 时 索 引 冗 余 锁 , 提 升 内 存 、 I/O 操 作 并 发
度 。
以 SMO 为例 , 通过 Blink - tree 将分裂和插入父节点操作解耦成两个相对
独立操作 , 允许其它并行查询看到 SMO 中间状态 。
DuuCloud.com-IT工程师的文库之家02
CloudJump :面向多介质云存储优化
DuuCloud.com-IT工程师的文库之家ESSD 块存储( ESSD PL2/3 型) OSS 对象存储( OSS 标准型)
容量范围 1TB ~ 32TB 文件总和无上限
IOPS 100K / 1,000K
顺序读写: 2,000
非顺序
PolarDB开发者大会:PolarDB面向云存储的架构优化.pdf