Page 461 - 《软件学报》2025年第12期
P. 461

5842                                                      软件学报  2025  年第  36  卷第  12  期


                  4.4   NUMA SN  集群连接性能
                    NUMA SN  集群连接算法提供了两个          NPO  算法和一个向量连接算法的实现技术, 采用动态数据分布技术提
                 高  NUMA  访问局部性. 当与    NUMA-aware 存储技术相结合时, 采用静态         NUMA  分区技术可以消除查询的数据分
                 区代价, 进一步提高连接性能收益.
                    如图  10  所示, PSNNPO  算法将  R  表和  S  表在  NUMA  节点间按连接键值分区存储以提高连接操作的              NUMA
                 数据访问局部性. 当      R  表较小时, PSNNPO  算法性能低于     NPO --basic-numa 算法. 当  R  表较大时, PSNNPO  算法可
                 以有效地消除跨      NUMA  访问延迟, 性能优于      NPO --basic-numa 算法. 两个算法性能曲线的交汇点由         L3 cache 的
                 效率决定, 即当哈希表有较高         cache 局部性时, NPO --basic-numa 算法性能优于    PSNNPO  算法, 反之则   PSNNPO
                 算法优于    NPO --basic-numa 算法. 在性能曲线交汇点的横坐标上         ARM(64)<Rome Zen2<Milan Zen3<CLX(28)<
                 ICX(38), 反映了各  CPU L3 cache 的有效容量的特征. RRNPO     算法将   R  表复制到各   NUMA  节点, 实现  NUMA  本
                 地化的连接操作. 全复制策略消除了           S  表分区代价但增加了      R  表冗余存储代价, 相对      PSNNPO  算法而言也增加了
                                                                                           27
                 连接探测代价. 从性能曲线特征来看, RRNPO           算法性能仅在最大表连接时          (ARM (64) 平台|R|>2 , CLX (28) 平台,
                                                        28
                 ICX (38) 平台, Rome Zen2  和  Milan Zen  平台|R|>2 ) 性能低于  NPO --basic-numa 算法. 此时, 相同  CPU  系统中  3
                 代  CPU  与  2  代  CPU  性能差距更小, 其主要原因在于全复制策略增强了哈希表探测的               NUMA  内存访问局部性, 并
                 且仅能通过本地      NUMA  节点的   cache 访问完整的   R  表的哈希表, NPO --basic-numa 算法的哈希表更小     (1/|NUMA
                 节点数量|×|R  哈希表|) 且可以利用多个       NUMA  节点的   cache.
                    图  11  显示了基于  NUMA  分区的向量连接算法        PSNVJ 算法和   Vector Join --basic-numa 基准算法的性能对比
                 曲线图. 在  Intel 的  CLX(28) 和  ICX(38) 平台上, PSNVJ 算法的性能几乎均低于    Vector Join --basic-numa, 数据分区
                 代价抵消了    NUMA   本地向量连接性能的收益. 在         ARM(64), Rome Zen2  和  Milan Zen3  平台上, PSNVJ 算法和
                 Vector Join --basic-numa 算法有相似的性能特征, PSNVJ 算法在   R  表较小和较大时性能均低于         Vector Join --basic-
                 numa 算法, 在  R  表范围较大的区间内性能低于         Vector Join --basic-numa, 如在  ARM(64) 平台上  PSNVJ 算法的性
                                                                          29
                                    28
                                                                    22
                              21
                 能优势区间为      2 <|R|<2 , 在  Rome Zen2  的性能优势区间为     2 <|R|<2 , 在  Milan Zen3  的性能优势区间为
                  23
                        29
                 2 <|R|<2 . 当  R  表向量大小超过  L3 cache 时  (Rome Zen2  片上  L3 cache 大小为  16 MB, Milan Zen3  片上  L3 cache
                 大小为   32 MB, 向量宽度为   4 B), Vector Join  算法失去  cache 局部性, 会产生跨  NUMA  内存访问延迟, 向量探测时
                 间高于   PSNVJ 算法. 当  R  表足够大时, PSNVJ 算法需要在     NUMA  本地访问完整的连接向量, 而          Vector Join  算法
                 在各  NUMA  节点中访问     1/|NUMA  节点|×|连接向量|大小的向量, cache      访问效率逐渐提升, 连接性能逐渐优于
                 PSNVJ 算法.
                                                                                            5
                    NUMA SN  集群连接算法的动态数据分区代价较高. 如在               ICX(38) 平台上最小连接负载|R|=2 和最大连接负
                       29
                 载|R|=2 时, 分区时间在连接总时间中占比为            82.5%  和  26.2%. PSNVJ 算法执行时间为  Vector Join --basic-numa
                 执行时间的    5.65  倍和  1.21  倍. 当采用静态  NUMA  数据预分区策略时, PSNVJ 算法消除动态分区代价后, 其执行
                 时间为   Vector Join --basic-numa 执行时间的  0.99  倍和  0.89  倍, 静态分区策略的性能收益不显著. 存储引擎中的静
                 态分区策略适合两个大表连接场景, 如            TPC-DS  基准中  store_sales 和  store_returns 双事实表按连接键进行  NUMA
                 分区存储. 当数据库中存在多个具有连接关系的大表时, 如                   TPC-H  中  lineitem  表, orders 表和  partsupp  表, 多维
                 NUMA  连接分区的存储和计算代价较高, 具有一定的局限性.
                    综上所述, 当跨     NUMA  访问延迟较高时, 可以将       NUMA  节点看作轻量     SN  集群, 通过典型的全复制或分区复
                 制策略提高    NUMA  节点内访问的数据局部性. 但连接表在            NUMA  节点上的协同分区需要一定的存储和数据预处
                 理代价, 当   CPU  的  NUMA  延迟性能提升    (如  ICX(38) 跨  NUMA  延迟较低) 及连接算法性能提升        (如向量连接
                 cache 效率较高) 时, NUMA SN  集群并行连接算法的性能收益降低, 硬件及软件性能的提升降低了复杂优化技术
                 的必要性.
                  4.5   NUMA  合并策略连接性能
                    NUMA  合并策略连接算法是面向          ARM  片上多   NUMA  节点所定制的优化策略. 由于片上           NUMA  间访问延
   456   457   458   459   460   461   462   463   464   465   466