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

韩瑞琛 等: NUMA-conscious 外键连接优化技术                                                  5829


                    内存数据库在磁盘上的数据存储布局通常只考虑                  I/O  访问效率, 在内存上存储布局则需要考虑在不同             NUMA
                 架构下通过行组内的       NUMA-conscious Radix  分区来提高数据访问的局部性.
                  2.2   NUMA-conscious 共享中间结果集复制策略
                    NPO  算法和向量连接算法使用共享哈希表和向量, 创建哈希表/向量及探测操作中会产生跨                             NUMA  访问延
                 迟, 为减少跨   NUMA  访问延迟, 设计了     3  个共享哈希表/向量复制策略, 通过在          NUMA  节点复制较小     R  表生成的
                 哈希表/向量实现     NUMA  内的哈希/向量连接操作.
                  2.2.1    细粒度复制策略  (fine-grained replication)
                    如图  4(a) 所示, 每个  NUMA  节点中   R  表分区中的记录在各      NUMA  节点并发地创建哈希表/向量, 从而在探
                 测阶段使每个     NUMA  节点中的    S  表分区记录可以执行      NUMA  内的哈希/向量连接. 该策略通过牺牲哈希表/向量
                 创建阶段的跨     NUMA  写代价来消除探测阶段的跨          NUMA  读延迟, 适用于连接探测阶段的代价远高于创建阶段的
                 应用场景. 基于细粒度复制策略的          NUMA  节点内私有哈希表或私有向量连接算法如算法                 2  所示.

                             R                                       R

                      Build                                   Build
                                       ...     ...
                             Replicated HT  Replicated HT  Replicated HT  Replicated HT
                               ...     ...      ...     ...             ...     ...     ...     ...
                      Probe                                   Probe


                             S                                       S
                                (a) Fine-grained replication strategy  (b) Coarse-grained replication strategy
                                                 R
                                         Partition


                                           Build

                                                    ...     ...      ...     ...
                                          Probe

                                                 S
                                                     (c) Partitioned replication strategy
                                              图 4 NUMA-conscious 连接实现技术

                 算法  2. 基于细粒度复制策略的       NUMA  节点内私有哈希表或私有向量连接算法.

                 Input: R 表, S 表, 私有哈希表 (pht k ) 或私有向量 (pv k ), k ∈ [0, N), N 对应于 NUMA 节点数;
                 Output: sum: 连接成功计数.
                 1. build 阶段
                 2. for thread k  in all threads do
                 3.  start ← startoffset k  in R 表
                 4.  i ← 1, location ← i + start
                 5.  repeat
                 6.   key ← R.tuple[location].key
                 7.   index ← (Hash(key) OR key)
   443   444   445   446   447   448   449   450   451   452   453