开发者社区 > PolarDB开源 > PolarDB 分布式版 > 正文

PolarDB 如何实现了企业级特性?

已解决

PolarDB 如何实现了企业级特性?

展开
收起
游客lmkkns5ck6auu 2022-11-15 10:05:28 263 0
1 条回答
写回答
取消 提交回答
  • 推荐回答
    1. 性能方面 • 实现了 CSN 快照用于解决单核场景下,随着核数增加其性能线性扩展的问题。 • 实现了 WAL Pipeline 功能,加速 WAL 日志的写入,提高写入吞吐量。 • 实现了预读和预扩展功能,一般做分析查询时需要大量扫描,而预读功能可尽 可能地发挥共享存储大带宽的特性。 • 实现了 RelSizeCache,查询时首先需要得到文件大小,此功能实现了对文件的 元数据做缓存。 • 实现了 CLOG 优化以及 FullPageWrite 优化,主要为通过 LogIndex 以及页面多 版本彻底避免 FullPage 的问题。FullPage 在 PolarDB 里有两种解法。  解法一:如果共享存储提供了 8k 或 8k 以上的原子写,可直接将 FullPage 关闭。因为共享存储是软件定义的存储,其原子写可以大于硬件的页面单元。  解法二:如果共享存储原子写在 8k 以下,可以使用页面多版本,将 FullPage 内容从 WAL 日志剥离,即可大幅减少 WAL 日志容量。

    2. 高可用方面 • 实现了 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 可下载完整版

    2022-11-15 20:58:45
    赞同 展开评论 打赏

PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,100%兼容MySQL。 2021年开源,开源历程及更多信息访问:OpenPolarDB.com/about

相关电子书

更多
PolarDB+AnalyticDB助力交通物流行业系统升级 立即下载
PolarDB NL2SQL: 帮助您写出准确、优化的SQL 立即下载
云栖大会:开源 PolarDB 架构演进、关键技术与社区建设 立即下载