De winst van database onderhoud

By: Martijn Wallet 01-04-2022

Categories:Beheer, BLOG, Oplossen,

Als er een rood lampje op je dashboard brandt, weten de meeste mensen razendsnel het telefoonnummer van de garage – of de ANWB – te vinden. Als een applicatie ineens trager wordt, zijn er maar weinig mensen geneigd iets te doen. Gemiste kans. In deze blog vertelt Martijn Wallet wat je wint als je regelmatig je database laat onderhouden.

Verdubbeling van responsetijden

Onlangs hadden we het aan de hand bij een klant. Een database was al tijden niet goed onderhouden, toen wij werden ingeschakeld. Wij wisten de responstijden van de applicatie van gemiddeld 2,8 seconden weer terug te brengen naar 1,4 seconden. Twee keer zo snel! Wat was er loos en wat hebben we gedaan?

Fragmentatie

Door het uitvoeren van insert-, update- en delete-statements op tabellen raken indexen op den duur gefragmenteerd. Dit betekent dat er weliswaar ruimte is gereserveerd voor een index, maar er staat geen bruikbare informatie meer op die plek. De fragmentatie van zo’n index is voor de database-engine een teken welke actie er nodig is om een handeling uit te voeren: een table-scan of een index-scan. Per platform wisselt het kantelpunt waarbij onderhoud noodzakelijk is. Bij SQL Server is het zo dat je bij een fragmentatie onder de dertig procent een ‘reorganize index’ kan overwegen.

Slimme manieren om een database te onderhouden

Komt dit fenomeen alleen op bepaalde databaseplatformen voor? Nee, dit is op alle platformen het geval. Het maakt niet uit of je MySQL gebruikt, of MariaDB, Oracle, Sybase, SQL Server, PostgreSQL of NoSQL-varianten zoals MongoDB. Wel varieert de oplossing per platform. Vaak zijn er wel standaard voorzieningen aanwezig, maar die zijn ingrijpend en blokkeren de normale databaseprocessen, zoals het opslaan van nieuwe records. Bij licensed platformen, zoals SQL Server en Oracle, komt het erop neer dat je meer moet betalen om deze blokkeringen te voorkomen. Er zijn echter manieren, met én zonder third-party tools, om die ingrijpende acties te minimaliseren of zelfs te voorkomen.

Database-onderhoudsplan

Per systeem of database kan een onderhoudsplan worden geïmplementeerd. Er zijn verschillende opties instelbaar voor het onderhoud, die variëren van heel ingrijpend tot risicomijdend. Het rebuilden van een index op een moment dat de database in gebruik is, zal impact hebben op de performance. Dat is niet prettig voor de gebruiker, dus is het aan te raden zo’n rebuild in te plannen in een onderhoudsvenster. Hierbij zijn allerlei varianten mogelijk, afhankelijk van de setup bij de klant en het type applicatie. Het implementeren van zo’n onderhoudsplan is een iteratief proces. Het gekozen onderhoud en de mate van fragmentatie moet je gedurende de werkweek of -dag zorgvuldig in de gaten houden en op elkaar afstemmen.

Langzame applicatie als virtueel waarschuwingslampje

Zo’n trager wordende applicatie is eigenlijk net als een lampje op je dashboard. Laatst sprak ik een vriend, die monteur is bij de ANWB. Regelmatig wordt hij opgeroepen om in allerijl naar een pechgeval te gaan. Meer dan eens zegt de autobezitter dan, vol verbazing: ‘Tsja, er brandde al drie weken een rood lampje op het dashboard.’ Dat was misschien een teken om eens naar de garage te gaan?? Een applicatie die ineens een stuk langzamer wordt, is eigenlijk het equivalent van het rode lampje op het dashboard: tijd om actie te ondernemen.

Onderhoud loont!

Het is niet verstandig te wachten tot het moment dat de performance van je omgeving voelbaar te wensen overlaat. In de praktijk komt achterstallig databaseonderhoud in negen van de tien gevallen pas aan het licht als wij een HealthCheck of QuickScan doen – als de virtuele ANWB-monteur langskomt dus. Zonde, de configuratie en hardware zijn in staat om veel betere prestaties te leveren. Achterstallig onderhoud uitvoeren en herstellen kost in de meeste gevallen meer tijd (en dus geld) en soms is er zelfs schade ontstaan. Door tegenvallende prestaties van je databaseomgeving kan zelfs je primaire proces vertraging oplopen waardoor ook op dit vlak onnodig kosten worden gemaakt. Door slimme monitoring en een (deels) geautomatiseerd onderhoudsplan kun je vertraging of mogelijke verstoring op tijd signaleren en zelfs voorkomen. Is het bij jou al tijd voor onderhoud?

Meer weten?

Nieuwsgierig of een onderhoudsplan de performance en de levensduur van jouw databaseomgeving kan verbeteren en hoe dat precies in z’n werk gaat? Neem gerust vrijblijvend contact op! We denken graag met je mee.

Andere blogs over dit onderwerp:

Help! MySQL groeit uit mijn jasje

Winst boeken met database performance-tuning

Indexering en partitioneringsanalyse met HypoPG

Zo krijg je je database weer fit en gezond

Terug naar blogoverzicht