Robust External Hash Aggregation in the Solid State Age
|—––|—––| | Paper | Robust External Hash Aggregation in the Solid State Age (PDF) | | Konferenz | ICDE 2024 |
Zusammenfassung
Analytische Datenbanksysteme bieten hochperformante In-Memory-Aggregation. Gibt es viele eindeutige Gruppen, passen temporäre Query-Zwischenstände möglicherweise nicht in den RAM und erfordern externen Speicher. Der Wechsel von einem In-Memory- zu einem externen Algorithmus kann die Leistung jedoch scharf einbrechen lassen. Wir betrachten externe Hash-Aggregation auf moderner Hardware neu und streben stattdessen robuste Leistung an, die eine „Leistungsklippe“ vermeidet, wenn der Speicher ausgeht. Dafür führen wir zwei Techniken für temporäre Query-Zwischenstände ein. Erstens schlagen wir vor, die Speicherverwaltung temporärer und persistenter Daten zu vereinheitlichen. Zweitens schlagen wir ein Seitenlayout vor, das sich auf Platte auslagern lässt, obwohl es für Main-Memory-Leistung optimiert ist. Diese beiden Techniken erlauben Operatorimplementierungen, größer-als-Speicher-Zwischenstände mit nur geringen Änderungen zu verarbeiten. Wir integrieren sie in DuckDBs parallele Hash-Aggregation. Experimentelle Ergebnisse zeigen, dass unsere Implementierung die Leistung elegant abbaut, wenn Query-Zwischenstände das verfügbare Speicherlimit überschreiten, während die Main-Memory-Leistung mit anderen analytischen Datenbanksystemen mithalten kann.