Efficient query processing with Optimistically Compressed Hash Tables & Strings in the USSR
Modern query engines rely heavily on hash tables for query processing. Overall query performance and memory footprint is often determined by how hash tables and the tuples within them are represented. In this work, we propose three complementary techniques to improve this representation: Domain-Guided Prefix Suppression bit-packs keys and values tightly to reduce hash table record width. Optimistic Splitting decomposes values (and operations on them) into (operations on) frequently-accessed and infrequently-accessed value slices. By removing the infrequently-accessed value slices from the hash table record, it improves cache locality. The Unique Strings Self-aligned Region (USSR) accelerates handling frequently-occurring strings, which are very common in real-world data sets, by creating an on-the-fly dictionary of the most frequent strings. This allows executing many string operations with integer logic and reduces memory pressure. We integrated these techniques into Vectorwise. On the TPC-H benchmark, our approach reduces peak memory consumption by 2-4× and improves performance by up to 1.5×. On a real-world BI workload, we measured a 2× improvement in performance and in micro-benchmarks we observed speedups of up to 25×.
|Query processing, Cache efficiency, Strings|
|IEEE International Conference on Data Engineering|
Gubner, T.K, Leis, V, & Boncz, P.A. (2020). Efficient query processing with Optimistically Compressed Hash Tables & Strings in the USSR. In Proceedings of the IEEE International Conference on Data Engineering (ICDE) (pp. 301–312). doi:10.1109/ICDE48307.2020.000