2022, 33(3):891-908.DOI: 10.13328/j.cnki.jos.006443
摘要:持久性内存(persist memory,PM)具有非易失、字节寻址、低时延和大容量等特性,打破了传统内外存之间的界限,对现有软件体系结构带来颠覆性影响.但是,当前PM硬件还存在着磨损不均衡、读写不对称等问题,特别是当跨NUMA (non uniform memory access)节点访问PM时,存在着严重的I/O性能衰减问题.提出了一种NUMA感知的PM存储引擎优化设计,并应用到中兴新一代数据库系统GoldenX中,显著降低了数据库系统跨NUMA节点访问持久内存的开销.主要创新点包括:提出了一种DRAM+PM混合内存架构下跨NUMA节点的数据空间分布策略和分布式存取模型,实现了PM数据空间的高效使用;针对跨NUMA访问PM的高开销问题,提出了I/O代理例程访问方法,将跨NUMA访问PM开销转化为一次远程DRAM内存拷贝和本地访问PM的开销,设计了Cache Line Area (CLA)缓存页机制,缓解了I/O写放大问题,提升了本地访问PM的效率;扩展了传统表空间概念,让每个表空间既拥有独立的表数据存储,也拥有专门的WAL (write-ahead logging)日志存储,针对该分布式WAL存储架构提出了一种基于全局顺序号的事务处理机制,解决了单点WAL性能瓶颈问题,并实现了NUMA感知的事务处理、检查点和灾难恢复等优化机制及算法.实验结果表明,所提出的方法能够有效提升NUMA架构下PM存储引擎的性能,在YCSB多种测试场景下分别提升了105%-317%,在TPC-C场景下提升了90%-134%.关键词:数据库;存储引擎;持久性内存;NUMA (non uniform memory access);WAL (write-ahead logging)