LQRS: Learned Query Re-optimization Framework for Spark SQL

Dit paper introduceert LQRS, een leerframework voor queryhervorming in Spark SQL dat gebruikmaakt van curriculumversterkend leren en runtime-observaties om bestaande plannen dynamisch te optimaliseren en de uitvoeringstijd tot 90% te verkorten.

Jiahao He, Yutao Cui, Cuiping Li, Jikang Jiang, Yuheng Hou, Hong Chen

Gepubliceerd 2026-03-05
📖 4 min leestijd☕ Koffiepauze-leesvoer

Each language version is independently generated for its own context, not a direct translation.

Stel je voor dat je een enorm complex recept hebt om een gigantische maaltijd te bereiden voor duizenden gasten. Je hebt een chef-kok (de query optimizer) die het recept moet plannen voordat de kook begint.

In de traditionele wereld (zoals Spark SQL zonder LQRS) kijkt de chef naar het recept en zegt: "Oké, ik denk dat we eerst de aardappels moeten schillen, dan de ui snijden, en daarna de saus maken." Hij baseert dit op wat hij denkt dat er in de koelkast zit. Maar wat als er eigenlijk maar één aardappel is, en de ui is gigantisch groot? De chef had dit niet kunnen weten voordat hij begon. Hij blijft steken in zijn oorspronkelijke plan, wat resulteert in een chaotische keuken en een maaltijd die te laat is.

LQRS (Learned Query Re-optimization Framework) is als een slimme, lerende assistent-chef die niet alleen vooraf plannen maakt, maar ook tijdens het koken meekijkt en ingrijpt.

Hier is hoe het werkt, in simpele termen:

1. Het Probleem: De "Vaste" Chef

Traditionele systemen en zelfs moderne "leer-systemen" (zoals Lero) maken hun plan voordat ze beginnen. Ze proberen te raden wat er gaat gebeuren.

  • Het probleem: Ze kunnen niet zien dat de aardappels (data) veel kleiner zijn dan gedacht, of dat de saus (een database-tabel) veel groter is. Omdat ze vastzitten aan hun oorspronkelijke plan, maken ze fouten die ze niet kunnen corrigeren.

2. De Oplossing: LQRS, de "Live" Chef

LQRS is anders. Het combineert twee dingen:

  1. Een slimme planner: Die een goed startplan maakt.
  2. Een slimme regisseur: Die tijdens het koken (tijdens de uitvoering van de query) echt kijkt wat er gebeurt.

De Analogie van de "Halve Maaltijd":
Stel je voor dat de chef de aardappels heeft geschild en ziet: "Oh, er zijn er maar twee! Ik hoef niet de hele pan te vullen."

  • De oude chef: Zegt: "Nee, we blijven doen alsof er 100 zijn, want dat stond in het plan."
  • LQRS: Zegt: "Wacht! We hebben maar twee aardappels. Laten we de volgorde van het recept direct aanpassen! Laten we eerst de saus maken en de aardappels er later bij doen, want dat gaat veel sneller."

LQRS doet precies dit. Het wacht niet tot het einde van de maaltijd om te zeggen "oh, dat was een slecht plan". Het grijpt in op het moment dat het ziet dat een stap veel sneller of langzamer gaat dan verwacht.

3. Hoe leert LQRS? (De "Curriculum" Methode)

LQRS is niet meteen een meester-chef. Het leert stap voor stap, net zoals een leerling:

  • Stap 1: Eerst leert het alleen de basis: "Welke pan gebruiken we?" (De startstrategie kiezen).
  • Stap 2: Dan leert het: "Als ik zie dat er weinig eten is, moet ik de volgorde van snijden aanpassen."
  • Stap 3: Uiteindelijk leert het complexe trucs, zoals het wisselen van grote en kleine ingrediënten om de snelste route te vinden.

Dit noemen ze Curriculum Reinforcement Learning. Het is alsof je een kind leert fietsen: eerst op een vlakke weg, dan op een heuvel, en pas later in de drukke stad.

4. De Magische "Plug-in"

LQRS is niet gebouwd als een compleet nieuw systeem, maar als een slimme plug-in voor Spark SQL (het bestaande kookapparaat).

  • Het gebruikt de bestaande "veiligheidsnetten" van Spark.
  • Het kan op elk moment zeggen: "Stop even! We hebben net gezien dat dit stukje data klein is. Laten we de volgorde van de volgende stappen veranderen."
  • Het doet dit zonder de hele maaltijd te moeten herstarten. Het past alleen het overgebleven deel van het recept aan.

5. Het Resultaat: Snelheid en Flexibiliteit

In de tests van het papier bleek dat LQRS tot 90% sneller kon zijn dan andere systemen.

  • Voorbeeld: Soms duurt een query 33 seconden. Met LQRS duurt het maar 15 seconden.
  • Waarom? Omdat LQRS ziet dat een bepaalde tabel (een "ingrediënt") slechts uit één regel bestaat. In plaats van die tabel als laatste te verwerken (zoals een traditionele chef zou doen), schuift LQRS deze naar voren. Hierdoor wordt de hele berekening veel lichter en sneller.

Samenvattend

LQRS is als een slimme navigatie-app voor een vrachtwagenchauffeur.

  • De oude systemen plannen de route op de kaart (voordat je vertrekt). Als er een file staat, weten ze het niet en blijven ze doorrijden.
  • LQRS kijkt live naar het verkeer. Zodra het ziet dat er een file is (of juist dat de weg vrij is), herpland het de route direct terwijl je rijdt. Het gebruikt de echte ervaring van de rit om de volgende beslissingen te nemen.

Dit maakt het systeem niet alleen slimmer, maar ook veel sneller en flexibeler dan alles wat we tot nu toe hadden.