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 的性

