Blitzcrank: Fast Semantic Compression for In-memory Online Transaction Processing
Yiming Qiao, Yihan Gao, Huanchen Zhang
TL;DR
Blitzcrank tackles the challenge of fast, fine-grained semantic compression for in-memory OLTP by learning column distributions and encoding values with a novel delayed coding scheme. It introduces fast semantic models for discrete and continuous data, plus a fixed-length, mixed-radix encoding method that yields near-entropy compression with sub-microsecond tuple decompression. Integrated into an in-memory DBMS (Silo), Blitzcrank achieves significant memory reduction and sustains throughput in both memory-resident and larger-than-memory datasets, outperforming Zstandard and Raman in compression and latency. The results demonstrate that semantic compression can be practical for OLTP with tight latency requirements and substantial working-set reductions.
Abstract
We present BLITZCRANK, a high-speed semantic compressor designed for OLTP databases. Previous solutions are inadequate for compressing row-stores: they suffer from either low compression factor due to a coarse compression granularity or suboptimal performance due to the inefficiency in handling dynamic data sets. To solve these problems, we first propose novel semantic models that support fast inferences and dynamic value set for both discrete and continuous data types. We then introduce a new entropy encoding algorithm, called delayed coding, that achieves significant improvement in the decoding speed compared to modern arithmetic coding implementations. We evaluate BLITZCRANK in both standalone microbenchmarks and a multicore in-memory row-store using the TPC-C benchmark. Our results show that BLITZCRANK achieves a sub-microsecond latency for decompressing a random tuple while obtaining high compression factors. This leads to an 85% memory reduction in the TPC-C evaluation with a moderate (19%) throughput degradation. For data sets larger than the available physical memory, BLITZCRANK help the database sustain a high throughput for more transactions before the l/O overhead dominates.
