性能方面 • 实现了 CSN 快照用于解决单核场景下,随着核数增加其性能线性扩展的问题。 • 实现了 WAL Pipeline 功能,加速 WAL 日志的写入,提高写入吞吐量。 • 实现了预读和预扩展功能,一般做分析查询时需要大量扫描,而预读功能可尽 可能地发挥共享存储大带宽的特性。 • 实现了 RelSizeCache,查询时首先需要得到文件大小,此功能实现了对文件的 元数据做缓存。 • 实现了 CLOG 优化以及 FullPageWrite 优化,主要为通过 LogIndex 以及页面多 版本彻底避免 FullPage 的问题。FullPage 在 PolarDB 里有两种解法。 解法一:如果共享存储提供了 8k 或 8k 以上的原子写,可直接将 FullPage 关闭。因为共享存储是软件定义的存储,其原子写可以大于硬件的页面单元。 解法二:如果共享存储原子写在 8k 以下,可以使用页面多版本,将 FullPage 内容从 WAL 日志剥离,即可大幅减少 WAL 日志容量。
高可用方面 • 实现了 DataMax,DataMax 指 logger 节点,可以通过配置文件将 PolarDB 部 署成只存储 WAL 日志,不存储数据页面。再配合 X-Paxos 即可实现两地三中心 的部署架构。 • 实现了 Online Promote,原生做 HA 切换时需要重启,而我们通过 Online Promote 实现了在线将备库切换为主库,进程无需重启。 • 实现了延迟回放和并行回放,能够降低主备之间的复制延迟,经过测试,在高 压力情况下,可实现毫秒延迟。 • 实现了常驻 BufferPool,数据库 BufferPool 做重启时,BufferPool 的内存会丢 失,导致数据库重启后需要花费长时间做预热。而常驻 BufferPool 将 BufferPool 内容剥离,放至共享存储,不会随着进程重启被销毁,维护了 buffer 的可用性。 • 实现了 Replication Slot 持久化功能,能够避免备库变成主库之后 replication slot 的丢失。• 实现了算子级别内存控制。执行分析性查询时,某些算子会占用大量内存,导 致内存膨胀,最终导致 OOM。而算子级别内存控制可以精细控制每个算子的内 存使用上限。 安全方面,实现了 TDE 透明加密功能。支持 AES 128、256 以及国密 SM4 算法。
以上内容摘自《PolarDB for PostgreSQL 开源必读手册》电子书,点击https://developer.aliyun.com/ebook/download/7822 可下载完整版
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,100%兼容MySQL。 2021年开源,开源历程及更多信息访问:OpenPolarDB.com/about