An architecture for recycling intermediates in a column-store
ACM Transactions on Database Systems , Volume 35 - Issue 4 p. 1- 41
Automatic recycling intermediate results to improve both query response time and throughput is a grand challenge for state-of-the-art databases. Tuples are loaded and streamed through a tuple-at-a-time processing pipeline, avoiding materialisation of intermediates as much as possible. This limits the opportunities for reuse of overlapping computations to DBA-defined materialised views and function/result cache tuning. In contrast, the operator-at-a-time execution paradigm produces fully materialised results in each step of the query plan. To avoid resource contention, these intermediates are evicted as soon as possible. In this paper we study an architecture that harvests the by-products of the operator-at-a-time paradigm in a column store system using a lightweight mechanism, the recycler. The key challenge then becomes selection of the policies to admit intermediates to the resource pool, their retention period, and the eviction strategy when facing resource limitations. The proposed recycling architecture has been implemented in an open-source system. An experimental analysis against the TPC-H ad-hoc decision support benchmark and a complex, real-world application (SkyServer) demonstrates its effectiveness in terms of self-organising behaviour and its significant performance gains. The results indicate the potentials of recycling intermediates and charts a route for further development of database kernels.