Plan Operator Specialization using Reflective Compiler Techniques
ISSN der Zeitschrift
Gesellschaft für Informatik e.V.
Query-specific code generation has become a well-established approach to speed up query execution. However, this approach has two major drawbacks: (1) code generators are in general hard to write and maintain, (2) code generators lack the ability to deal with custom operators. To overcome these limitations, we suggest to return to the traditional execution approach with precompiled generic operators which are parametrized and composed to query plans at query compile time. Nevertheless, to optimize such plan operators and speed up their execution, we introduce a novel specialization approach using reflective compiler techniques. Employing code annotations and an additional compiler pass, we are able to track and replace low-level load instructions that refer to operator parameters which remain constant during execution time. By dissolving such up-to-now unknown constant variables, the compiler can further optimize the code and is able to determine query-specific optimized operators out of generic operator code. In our evaluation, we show that our approach speeds up the execution of the traditional generic operator approach in terms of execution time without facing the drawbacks of code generators.