Code generation is a widely-used technique for improving query execution throughput by compiling instructions into native code. This technique, however, leads to design challenges for the recovery system of a DBMS. The log replay process will be disconnected from the built-in execution engine that has been modified to operate efficiently on compiled code. This usually leads to the implementation of a separate execution engine to deal with the execution of log records. To resolve this design conflict, we propose a code generation design for the recovery system. We ask the recovery system to convert log records into compiled code that will be easily accepted by the execution engine. Our results show that while our approach creates more performance overhead compared to using a separate execution engine, it also introduces much less engineering overhead and is superior in aspects such as index updates and constraint checking.
Andy Pavlo (Chair)
Zoom Participation. See announcement.