Enhancing MySQL Query Optimizer Robustness Through Risk-Aware Estimate Evaluation
Abstract
Siden 1970-tallet, da relasjonsdatabaser først ble populære, har landskapet innen teknologi og dens anvendelse endret seg. I begynnelsen var fokuset i databaseutvikling primært på å oppnå spørringsplaner med så kort kjøringstid som mulig. Imidlertid har fokuset endret seg ettersom tilgjengeligheten til maskinvare har blitt bedre, fra å prioritere ytelse til å fokusere på en kobinasjon stabilitet og hastighet.
Feil i kardinalitetsestimater er en stor utfordring innen databaseoptimeringsfeltet. Selv små feil i estimatene kan føre til betydelig reduksjon i ytelsen. Robust spørringsoptimaliser-ing har blitt introdusert som en mulig løsing på dette problemet. De robuste strategiene innebærer et kompromiss, hvor man ofrer noe ytelse til fordel for forbedret stabilitet. En måte å gjøre dette på er å vurdere risiko knyttet til estimater.
MySQL benytter ikke risikovurdering i sin prosess for valg av utførelsesplaner. Dermed risikerer systemet å prioritere tilsynelatende raske, men risikable planer over litt langsommere, men sikrere alternativer. Dette fører til at optimalisatoren kan ende opp med å velge mer risikable planer som øker sannsynligheten for å skape ytelsesproblemer.
Denne masteroppgaven har som mål å ta hensyn til sannsynligheten for unøyaktige anslag ved optimering for å finne den beste spørreplanen. For å oppnå dette målet har vi først gjennomført en undersøkelse av suboptimale planer generert av MySQL, for å finne ut hvorfor de oppstår og få en idé om hvordan de kan unngås. Deretter implementerer vi tre ulike metoder og kjører eksperimenter på disse metodene for å se om de øker robustheten i MySQL. To av disse metodene demonstrerte en mer robust ytelse i våre tester enn MySQL sin original optimalisator. Since the 1970s, when the relational database first became popular, the landscape of technology and its application have changed. Initially, the emphasis in database development was primarily on creating plans that execute as fast as possible. However, with the increasing affordability and accessibility of hardware, the focus has shifted towards prioritizing a combination of stability and speed.
Errors in cardinality estimates are a big challenge in the database optimization field. Even small errors can significantly degrade database performance. To mitigate this issue, robust query optimization strategies have been introduced. These strategies involve a trade-off, sacrificing some performance in favor of enhanced stability. One possible solution is assessing the risks associated with optimization estimates.
MySQL does not incorporate risk assessment into its execution plan selection process. Consequently, it risks prioritizing seemingly fast yet risky plans over slightly slower but safer alternatives. This inclination towards riskier plans heightens the likelihood of encountering performance instabilities, which hurts system reliability.
This thesis aims to take the probability of estimates being wrong into consideration when optimizing to find the best query plan. To achieve this goal, we have first completed an investigation of suboptimal plans in the MySQL query optimizer to figure out why suboptimal plans occur and to get an idea of how they can be avoided. After we had obtained a more thorough understanding of the problem, we implemented three different methods and ran experiments on these methods to see if they increased the robustness of the MySQL DBMS. Two of these methods demonstrated a more robust performance than the original MySQL optimizer.