本文介绍了PolarDB MySQL版基于CXL(Compute Express Link)实现的计算-内存-存储三层解耦合架构。该技术的核心创新已在SIGMOD 2025上发表的论文《Unlocking the Potential of CXL for Disaggregated Memory in Cloud-Native Databases》中荣获Best Paper Award。PolarDB MySQL版通过PolarCXLMem分解内存系统,直接将高性能内存池连接到计算节点,支持秒级加载CXL内存,并将单节点内存的最大扩展提升至8 TB级别。在sysbench IO-Bound模型下,该架构的性能提升超过100%。同时,基于独创的PolarRecv技术,结合CXL内存的持久化特性,能够将数据库的崩溃恢复性能提升超过40倍以上。此外,基于CXL的内存池化技术同样适用于人工智能训练和推理场景。
CXL内存扩展功能目前处于灰度阶段。如需使用该功能或对当前功能有任何疑问,请提交工单联系我们为您处理。
适用范围
集群版本:MySQL 8.0.2,且内核小版本8.0.2.2.31.1及以上。
工作原理
为解决传统架构下内存资源扩容难与成本高的痛点,PolarDB MySQL版基于CXL 2.0技术,设计了创新的PolarCXLMem分解内存架构。该架构将CXL内存池作为DRAM内存的扩展,直接连接至计算节点,数据库引擎可像访问本地内存一样,通过原生的Load/Store指令直接读写CXL内存中的数据。
与传统的RDMA远端内存方案相比,PolarCXLMem架构无需复杂的网络协议栈和数据拷贝,避免了性能损耗和读写放大问题,真正实现了计算与内存的解耦,为您提供接近DRAM性能、更低成本和更高容量的内存选择。

统一内存与无分层设计
与通过RDMA网络访问远端内存的三层解耦(PolarDB DMP)方案不同,PolarCXLMem通过CXL.mem协议将CXL内存设备直接映射到主机的物理地址空间。对于数据库内核,DRAM和CXL内存共同组成一个统一、无分层的Buffer Pool。CPU通过原生的
Load/Store指令直接访问CXL内存,方式与访问本地DRAM一致。这避免了在不同内存层级间进行页面换入换出所带来的性能开销和读写放大问题。硬件级缓存一致性
CXL.cache协议在硬件层面保证CPU缓存与CXL内存之间的数据一致性,无需数据库软件进行额外的缓存管理,从而简化了架构并提升效率。
基于持久化内存的秒级恢复(PolarRecv)
PolarRecv技术利用了CXL内存的持久化特性。数据库崩溃时,位于CXL持久化内存上的Buffer Pool数据无需通过重放Redo Log来恢复。通过PolarRecv技术,数据库可直接加载CXL内存中的数据,实现秒级加载,将崩溃恢复时间(RTO)缩短至秒级。在特定测试场景下,恢复速度可提升40倍以上。
功能优势
显著降低成本:CXL内存的单位GB成本远低于本地内存(DRAM),可将您的数据库内存总成本降低30%~50%。同时,计算与内存资源可独立弹性伸缩,按需付费,避免资源浪费。
突破容量限制:解决单台物理机内存插槽的限制,将单个计算节点的内存容量最高提升至8 TB,从而有效应对超大数据集的分析与查询场景。
性能接近DRAM:在点查、混合读、读写等多种OLTP负载场景下,增加CXL内存后的集群性能有20%~112%的提升。同时,基于独创的
PolarRecv技术和CXL内存持久化特性,数据库崩溃恢复RTO可缩短40倍以上。
应用场景
内存密集型在线业务(OLTP):在社交、游戏、电商等场景中,核心数据(用户关系、商品信息、实时订单)需要常驻内存以保证低延迟访问。使用CXL内存可以低成本地将更大的工作集缓存于内存中,减少I/O开销。
大数据量分析与报表(AP):对于需要对海量数据进行复杂查询和实时分析的业务,CXL内存提供的大容量可以容纳更多数据,加速查询处理,避免因内存不足导致的频繁磁盘读取。
大模型推理加速(PolarKVCache):在大语言模型(LLM)推理中,KVCache会消耗大量GPU显存,成为性能瓶颈。使用CXL可将KVCache从有限的GPU显存扩展至TB级的内存池中。
开发与测试环境:为开发和测试环境配置大内存规格时,CXL内存是一个高性价比的选择,能以较低成本模拟生产环境的大内存场景。
性能测试报告
以下性能数据源于特定测试环境,仅供参考。实际性能可能因集群规格、工作负载、数据模式和参数配置等因素而异。
测试环境
集群规格:8.0.2企业版,独享规格8核 32 GB。
测试数据:40张表,每张表10,000,000行。
对比方案:
方案A(基线):8核 32 GB,总可用内存32 GB。
方案B(CXL扩展):8核 32 GB + 64 GB CXL内存,总可用内存96 GB。
该测试对比了在基础规格上增加CXL内存所带来的性能提升。此对比并未反映CXL内存与同等容量纯DRAM规格之间的性能差异,其主要目的是验证通过CXL扩展内存容量对数据库吞吐量的影响。
测试结果
增加64 GB CXL内存后,集群的整体性能(QPS)最高提升112%。更大的Buffer Pool可以缓存更多数据,从而减少磁盘I/O。
点查(oltp_point_select)
开启CXL内存池后,性能提升50%~112%。
混合读(oltp_read_only)
开启CXL内存池后,性能提升30%~80%。
读写混合(oltp_read_write)
开启CXL内存池后,性能提升20%~50%。