三层解耦(PolarDB DMP)

本文介绍了PolarDB的分布式内存池(Distributed Memory Pool,简称DMP)技术,基于DMP技术PolarDB实现了计算-内存-存储的三层解耦架构,并通过多机分布式高性能缓存和one-sided RDMA(Remote Direct Memory Access)高速网络,大幅提升了在I/O密集型负载下的读写性能表现。您可以在业务完全无感无需中断或阻塞集群运行的情况下,秒级动态开启和关闭DMP。

使用范围

产品版本:企业版

说明

DMP功能目前处于灰度阶段。如需使用该功能或对当前功能有任何疑问,请随时联系我们,我们将及时为您解答。

原理介绍

数据库的缓存池(Buffer Pool)是内存中用于缓存磁盘数据的区域。当需要访问数据时,先从Buffer Pool中读取,若数据在Buffer Pool未命中,则需要从底层存储中获取数据,相比内存访问,IO操作会增加读盘延迟(若涉及远程存储,还包括网络延迟),这将直接影响数据库的性能。

出于单台主机的资源限制,当前PolarDB集群是将CPU和内存按一定的比例进行售卖,这种售卖方式存在三个问题:

  • 不能灵活适配业务的使用场景:如内存密集型的业务更依赖大内存,计算密集型业务更需要多核;如果能将计算和内存解耦,业务便可进一步灵活配比,降本增效。

  • 内存上限受限:单集群的内存上限受限于单台主机的内存上限。如当前大部分集群规格上限为512 GB。

  • 变配有感:当前资源变配需要通过迁移实现,迁移期间业务有闪断风险。大型业务活动前的变配往往需要提前数天进行,而且很难应对突发流量。

PolarDB DMP通过one-sided RDMA高速网络,将多台主机上的内存组合成了一个大容量、低延迟、可扩展的分布式共享内存池。挂载DMP后,PolarDB计算节点自动按照本地缓存(Cache)-内存-分布式内存-分布式存储的优先级进行I/O操作,无需业务感知与适配,挂载后可动态扩缩容。

说明

挂载以及扩缩容期间,业务均无感。

DMP的加持下,PolarDB单集群内存上限可达10 TB,且16 KB随机读I/O延迟低至10us(约为存储I/O1/10),I/O bound场景性能大幅提升,TPC-H性能最大提升6.5倍。

b7853f2ec223cc01b1b98e0f62cb1eb5

核心优势

  • I/O bound场景性能提升:one-sided RDMA加持下,DMP 16 KB随机读IO延迟可低至10us,读延迟相较存储IO降低10倍。

  • 内存上限突破:单节点最大内存可达10 TB。

  • 秒级无损弹性:DMP挂载时间<1秒,期间业务完全无感;

  • 配置灵活:DMP功能可以在集群级别进行配置,也可以针对主节点或特定的只读节点进行单独配置,以提升读写性能。