Robust Predicate Transfer with Dynamic Execution

Paper Robust Predicate Transfer with Dynamic Execution (PDF)
Implementierung Code
Konferenz VLDB 2026

Zusammenfassung

Effiziente Join-Abfrageausführung bleibt eine zentrale Herausforderung in modernen Datenbanksystemen. Obwohl eine kürzliche Methode, Robust Predicate Transfer (RPT), die Robustheit gegenüber suboptimalen Join-Reihenfolgen verbessert, führt sie zu erheblichem Overhead durch redundante Filtererzeugung und ineffizientes Datenscannen. Wir stellen RPT+ vor, das diese Probleme durch drei zentrale Verbesserungen adressiert. Erstens schlagen wir asymmetrische Transferpläne vor, um redundante Bloom-Filter-Konstruktionen zu reduzieren. Zweitens entwerfen wir Kaskadenfilter, um die Effizienz des Datenscannens zu verbessern, indem sie sowohl Block-Level-Skipping als auch Tuple-Level-Filterung ermöglichen. Drittens führen wir dynamische Pipelines ein, die Filtererzeugung zur Laufzeit und die Anpassung von Transferplänen erlauben. Wir haben RPT+ in DuckDB (v1.3.0) implementiert und es über mehrere Benchmarks bewertet, darunter den Join Order Benchmark (JOB), SQLStorm, TPC-H und Appian. Gegenüber der DuckDB-Baseline erreicht RPT+ Speed-ups von 1,47× auf JOB, 1,28× auf SQLStorm, 1,17× auf TPC-H und 1,01× auf Appian. Wichtig ist, dass es die erheblichen Leistungsrückschritte des ursprünglichen RPT vermeidet. Diese Ergebnisse zeigen, dass RPT+ nicht nur die Abfrageleistung verbessert, sondern auch die Robustheit von RPT über diverse Workloads hinweg beibehält.