Dear User-Defined Functions, Inlining isn't working out so great for us. Let's try batching to make our relationship work. Sincerely, SQL

Paper Dear User-Defined Functions, Inlining isn’t working out so great for us. Let’s try batching to make our relationship work. Sincerely, SQL (PDF)
Konferenz CIDR 2024

Zusammenfassung

Benutzerdefinierte Funktionen (UDFs) in SQL erlauben es Entwicklerinnen und Entwicklern, komplexe Berechnungen mit prozeduraler Logik auszudrücken. UDFs sind jedoch seit Jahrzehnten ein Ärgernis für Datenbankmanagementsysteme (DBMS), weil sie Optimierungsmöglichkeiten einschränken und Abfragen erheblich verlangsamen können. Als Reaktion wurden Batching- und Inlining-Techniken vorgeschlagen, um UDF-Aufrufe innerhalb von SQL wirksam zu optimieren. Inlining ist inzwischen in einem großen kommerziellen DBMS verfügbar. Die Kompromisse zwischen beiden Ansätzen auf modernen DBMS sind jedoch unklar. Wir bewerten und vergleichen UDF-Batching und Inlining auf Enterprise- und Open-Source-DBMS anhand eines state-of-the-art UDF-zentrierten Workloads. Überraschend stellen wir fest, dass Inlining bei einfachen UDFs besser ist, Batching Inlining bei komplexeren UDFs jedoch um bis zu 93,4× übertrifft, weil es dem Query-Optimizer eines DBMS leichter fällt, Subqueries zu dekorrelieren. Wir schlagen einen hybriden Ansatz vor, der zwischen Batching und Inlining wählt, um die beste Leistung zu erzielen.

Kurzfassung

Dieser Beitrag untersucht UDF-nach-SQL-Transpilierung und Inlining sowie die damit verbundene Rolle der Dekorrelation in DuckDB. Er führte zu Sam Archs (CMU) Implementierung der Dekorrelation für verschachtelte LATERAL-Joins in DuckDB.