摘要:NUMA (non-uniform memory access)是现代多核、多路处理器平台上主流的内存访问架构, NUMA访问延迟对数据库的查询性能有较大影响, 因此如何降低查询处理中跨NUMA节点的访问延迟是现代内存数据库查询优化的热点问题之一. 不同的处理器在NUMA架构、NUMA延迟等方面差异较大, 因此NUMA优化技术需要与硬件特性相结合. 基于内存数据库执行代价最高和对数据局部性依赖最强的内存外键连接算法, 面向代表性的ARM、Intel CLX、Intel ICX、AMD Zen2和AMD Zen3这5个处理器NUMA架构和延迟特征, 探索了不同NUMA优化方法, 包括NUMA-conscious和NUMA-oblivious实现技术. 在数据存储、数据分片、连接中间结果缓存等方面采用不同的优化方案, 比较了不同处理器架构上的算法性能, 实验结果表明, NUMA-conscious优化策略需软、硬件相结合, 其中Radix Join对NUMA延迟敏感度为中性, 在5个不同的处理器平台上, NUMA优化性能收益稳定在30%左右, NPO算法对NUMA延迟敏感度较高, 在不同平台NUMA优化性能收益在38%–57%, Vector Join算法对NUMA延迟敏感但影响幅度较小, NUMA优化性能收益在1%–25%之间, 且在算法性能特征上, Vector Join受cache效率影响比NUMA延迟影响更大; NUMA-conscious优化技术在ARM平台差异较大, 在x86平台差异极小, NUMA-oblivious算法复杂度更低, 具有较好的通用性. 从处理器硬件发展趋势来看, 降低NUMA访问延迟可以有效地降低不同NUMA-conscious优化算法的性能差异, 简化连接算法的复杂度, 提高连接操作性能.