Page 18 - 《软件学报》2026年第2期
P. 18

刘佳伟 等: LA-tree: 查询感知的自适应学习型多维索引                                                  497



                 1. if   C N k  = ∅ then
                                                     t
                 2.  Insert/delete/update data tuple   t after locating   with PLM on dimension
                                                                        a N k
                 3. else
                 4.   c ← Choose the child node by  t a N k  with LM on dimension  a N k  , refine by  ±eb
                 5.  latree-incremental-data-update(  N C N k ,c  t ,  )
                 6. end if
                 7. return
                    ● 数据更新对索引影响. 在       LA-tree 对数据的划分不发生改变之前, 上述增量更新过程不会影响任何节点上机
                 器学习模型的     error-bound. 由公式  (12) 和公式  (13) 可以保证, 新数据总会被更新到各节点正确的分位点之间, 即
                 最终更新到正确的单元. 这种情况下, 任何范围包含新数据的查询, 不会发生结果遗漏. 然而, 随着数据更新的累
                 积, 数据分布的变化将使得部分区域数据量明显超过平均水平, 即                    LA-tree “均匀划分”的特性不再保持. 这会导致
                 范围与该区域有交集的查询扫描量升高, 查询用时变长.
                    ● 查询负载变化对索引影响. 随查询负载的变化, 查询范围分布将发生变化, 部分节点的维度和分位点可能被
                 查询范围完全包含, 从而失去筛选数据的效果. 这同样会导致查询扫描量升高, 查询用时变长.
                    综上, 更新的关键影响在于检查查询扫描量的变化. 随着数据更新与查询负载变化的累积, 原有                             LA-tree 索引
                 的划分模式可能不再适应于当前的数据分布和查询负载, 导致在线查询扫描比上升, 查询耗时增加, 因而需要对
                 LA-tree 的划分模式重新调整.
                    ● 自适应更新. 利用动态扫描量自适应判断             LA-tree 索引的哪些节点需要重构以调整数据划分, 该方法既不按
                 照数据分布的变化判断, 也不按照查询负载的变化判断, 而是当局部索引的性能真正受到两者共同变化的影响, 体
                 现在节点的评分函数受新查询较高的扫描比影响, 增大幅度超过阈值, 即性能明显劣化, 判断以该节点为根的子树
                 需要重构以重新拟合新的数据分布与查询负载. 如图                 5, 若干新查询执行过程中, 参与筛选的节点在自底向上结果
                 合并时, 以子节点返回的查询扫描比快速更新节点评分函数. 在这一过程中, 如检测到评分函数大幅增大, 如图                                 5
                 中红框内的节点, 则标记该相应子树需重构, 并在本次查询结束后执行.

                                              新查询             X   OPRS=0.23
                                               ···                OPRS'=0.26
                                          q': SELECT* FROM T  17  37
                                           WHERE 3≤X≤35
                                            AND 70≤Y≤75   OPRS=0.35  OPRS=0.10
                                                       Y        X           Y
                                                          OPRS'=0.32  OPRS'=0.12
                                                     30  61
                                                  X    Y   X   OPRS=0.2  Y  子树重构
                                                               OPRS'=0.3
                                               6  11  33  38  12  15    75  87
                                            Y  Y  X  X  X  Y  X  Y  Y  Y  Y  Y
                                               图 5 LA-tree 自适应更新子树重构

                    算法  4  展示了自适应重构的框架, 检查出满足上述条件的节点, 并对相应子树调用离线构建算法                           2  重构子树.
                 如此, 所有需要重构的子树全部重新优化了性能, 此外没有任何多余的调整操作.
                 算法  4. LA-tree 自适应索引子树重构: latree-adaptive-reconstruction( N 1 q).
                                                                       ,
                 输入: LA-tree 根节点   N 1 , 在线查询  q;
                 输出: 更新后的    LA-tree 索引根节点  N .
                                              ′
                                              1
                 1.  N ← latree-adaptive-check( N 1 q) //需更新节点集合
                                         ,
                    ′
   13   14   15   16   17   18   19   20   21   22   23