Page 274 - 《软件学报》2026年第3期
P. 274

袁巩生 等: JIT  编译技术在可插拔存储引擎数据库中的应用                                                 1237


                 少  5%–30%, 这表明我们的    JIT  编译系统能够有效提升       OLAP  类查询的谓词表达式求值效率. 某些查询如              Q8  和
                 Q13  在单独使用   JIT  编译时并未表现出显著的执行时间减少. 这是因为这两个查询中的谓词表达式相对简单, 且
                 其性能瓶颈不在于过滤操作. Q8         的瓶颈在于连接操作, Q13       则在于聚合操作, 因此       JIT  编译相对于解释执行的优
                 势不明显. 相反地, 查询      Q6  和  Q21  由于其性能瓶颈在过滤操作上, 因此在启用            JIT  编译后执行时间明显降低.
                 图  9  展示了查询  Q6  和  Q21  在解释执行与  JIT  编译执行下的    CPU  开销对比. 如图所示, 查询      Q6  的  CPU  开销从
                 35.14%  下降至  14.19%, 查询  Q21  的  CPU  开销则从  28.89%  下降至  10.29%. 编译执行尽管增加了一定的编译开销,
                 但查询的过滤操作       CPU  开销却大幅下降.

                                40
                                                                            MySQL
                                35                                          MySQL+JIT
                                                                            MySQL+JIT+Pushdown
                                30
                               Execution time (s)  20
                                25


                                15
                                10
                                 5
                                 0
                                      1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22
                                                           Query number
                                                  图 8 TPC-H  查询性能提升


                                                      Filter                             Filter
                                 Q6            Q21               Q6             Q21
                                                      Others                             Compile
                                                                                         Others
                                                                                 10.29
                                                                   14.19
                                    35.14         28.89                             9.11
                                                                     10.82
                            64.86
                                            71.11
                                                              74.99          80.60
                                     (a) 解释执行                         (b) 编译执行
                                           图 9 解释执行与编译执行        CPU  开销对比 (%)

                    进一步结合谓词下推技术, 我们观察到不同查询的表现有所不同. 尽管                       Q8  和  Q13  在结合谓词下推后执行时
                 间有一定的减少, 但由于其瓶颈仍不在过滤操作上, 减幅较小. 查询                    Q1  由于其过滤条件的选择率非常高, 即使结
                 合谓词下推, 也无法有效提前过滤数据, 导致执行时间的减幅不明显. 相比之下, 查询                        Q4、Q12  和  Q14  不仅在过
                 滤操作上存在明显的性能瓶颈, 且选择率较低, 通过谓词下推能够提前过滤大量数据, 执行时间得到显著的降低.
                    综上所述, JIT  编译系统在     TPC-H  基准测试中对复杂      OLAP  类查询的性能提升效果显著, 特别是在查询过滤
                 操作成为性能瓶颈的情况下. 结合谓词下推技术, 系统进一步优化了查询性能, 尤其是对于那些具有低选择率过滤
                 条件的查询, JIT  编译系统展现出了更大的优化潜力.
                  4.5.2    查询选择率对  JIT  编译的影响
                    本节重点分析在      JIT  编译结合谓词下推的场景下, 查询选择率对性能提升的影响. 为此, 我们选取了                      3  个具有
                 代表性的   TPC-H  查询, 分别是  Q1、Q4  和  Q8, 以全面评估选择率变化对        JIT  编译系统性能的具体影响.
                    如图  10  所示, 在启用  JIT  编译结合谓词下推功能后, 随着查询选择率的增加, 3             个查询的性能提升百分比均呈
                 现出显著下降的趋势. 这一趋势表明, 当查询选择率较高时, 存储引擎层能够提前过滤的数据量减少, 性能提升更
                 多地依赖于编译执行减少的函数调用开销, 而无法充分发挥谓词下推的优化优势.
                    在第  4.5.1  节的测试中, 启用谓词下推功能后, Q1        的性能提升为     7.64%. 当查询选择率降低至      1%  时, Q1  的性
   269   270   271   272   273   274   275   276   277   278   279