Monitor missende indexen automatisch met Database Explorer
Ontbrekende indexen kunnen na verloop van tijd voor steeds grotere performanceproblemen zorgen. Met Database Explorer kunt u deze automatisch monitoren, afwijkingen detecteren en direct laten opvolgen.
Een database kan in de loop van de tijd steeds groter en complexer worden. Nieuwe tabellen en kolommen worden toegevoegd, queries veranderen en applicaties krijgen nieuwe functionaliteit. Hierdoor kunnen ook nieuwe performanceproblemen ontstaan.
Een veelvoorkomend probleem is een ontbrekende index. SQL Server kan tijdens het uitvoeren van queries signaleren dat een index ontbreekt die de query efficiënter zou kunnen maken.
In een omgeving met meerdere databases en duizenden queries is het echter lastig om deze aanbevelingen handmatig te blijven controleren.
Database Explorer maakt van deze controle een automatisch proces. Databases worden periodiek gecontroleerd, nieuwe afwijkingen worden gedetecteerd en wanneer nodig wordt automatisch een melding aangemaakt.
Wat is een ontbrekende index?
Een index helpt SQL Server om gegevens sneller te vinden zonder daarvoor een volledige tabel te moeten doorzoeken.
Stel dat een applicatie regelmatig de volgende query uitvoert:
SELECT *
FROM Orders
WHERE CustomerId = 12345
Wanneer CustomerId geen geschikte index heeft, kan SQL Server een groot gedeelte van de tabel moeten doorzoeken. Naarmate de tabel groeit, kan dit steeds meer tijd kosten.
SQL Server houdt tijdens het uitvoeren van queries informatie bij over mogelijke ontbrekende indexen. Deze informatie kan worden gebruikt om te bepalen waar een index mogelijk de performance kan verbeteren.
Waarom ontbrekende indexen monitoren?
In een kleine database kan een DBA regelmatig handmatig naar indexadviezen kijken. In grotere omgevingen wordt dat al snel lastig.
Denk bijvoorbeeld aan een organisatie met:
- tientallen databases;
- honderden tabellen;
- duizenden queries;
- meerdere productieomgevingen;
- databases die continu veranderen.
Een ontbrekende index die vandaag nog geen probleem veroorzaakt, kan over enkele maanden wel een performanceprobleem worden doordat een tabel sterk is gegroeid.
Daarom is het interessanter om niet alleen naar de huidige situatie te kijken, maar periodiek te controleren of er nieuwe indexproblemen zijn ontstaan.
Automatisch meten met Database Explorer
Database Explorer kan een meting uitvoeren waarmee de aanwezige missing-index informatie uit SQL Server wordt gecontroleerd.
Deze meting kan periodiek worden uitgevoerd via een job. Het resultaat wordt vervolgens opgeslagen en beoordeeld aan de hand van de ingestelde regels.
Van missing index naar melding
Het interessante aan Database Explorer is dat een meting niet alleen een waarde oplevert.
Wanneer een meting een afwijking detecteert, kan automatisch een melding worden aangemaakt.
Database: CustomerDB
Tabel: Orders
Kolom: CustomerId
Verwachte impact: hoog
De melding kan vervolgens aan een verantwoordelijke gebruiker worden toegewezen. Hierdoor verandert een technische databasecontrole in een concrete taak die iemand kan opvolgen.
Niet iedere index hoeft automatisch aangemaakt te worden
Een belangrijk onderdeel van indexbeheer is dat een missing-index advies niet automatisch betekent dat er direct een index moet worden aangemaakt.
Een index heeft namelijk ook nadelen. Indexen gebruiken opslagruimte en moeten worden bijgewerkt wanneer gegevens worden toegevoegd, gewijzigd of verwijderd.
Daarom is het belangrijk om bijvoorbeeld te kijken naar:
- hoe vaak een query wordt uitgevoerd;
- hoeveel voordeel de index oplevert;
- hoeveel data de tabel bevat;
- of er al een vergelijkbare index bestaat;
- of meerdere missing-index adviezen gecombineerd kunnen worden.
Database Explorer kan hiermee helpen door missing-index informatie eerst als meting en melding beschikbaar te maken. De DBA kan vervolgens beoordelen welke indexen daadwerkelijk zinvol zijn.
Overlappende indexen voorkomen
Een ander belangrijk aandachtspunt is dat SQL Server meerdere vergelijkbare indexadviezen kan geven.
Index 1: CustomerId
Index 2: CustomerId, OrderDate
Index 3: CustomerId, OrderDate, Status
Blind alle drie de indexen aanmaken is meestal geen goed idee.
Door missing-index adviezen eerst te verzamelen en onderling te vergelijken, kunnen overlappende of vergelijkbare indexen worden herkend. Hierdoor ontstaat een veel beter uitgangspunt voor gecontroleerd indexbeheer.
Een praktijkvoorbeeld
Stel dat een organisatie een SQL Server database heeft met een grote tabel Orders.
De tabel bevat inmiddels 25 miljoen records. De applicatie is in de loop van de tijd uitgebreid en er worden steeds meer zoekopdrachten uitgevoerd op CustomerId.
Database Explorer voert iedere nacht een meting uit.
De ingestelde regel bepaalt dat een dergelijke afwijking moet worden gemeld.
Orders.CustomerId heeft een nieuwe indexaanbeveling. Controleer of een index kan bijdragen aan betere queryperformance.
De DBA krijgt de melding en kan vervolgens onderzoeken of een index daadwerkelijk gewenst is.
Zo wordt het probleem ontdekt voordat een gebruiker hoeft te melden dat een applicatie langzaam is geworden.
Van monitoring naar automatisch databasebeheer
Het controleren van missing indexes is een goed voorbeeld van hoe databasebeheer verder kan gaan dan alleen monitoring.
Database Explorer werkt hierbij met een eenvoudige processtructuur:
Hierdoor ontstaat een continue cyclus waarin de database niet alleen wordt gecontroleerd, maar waarbij afwijkingen ook daadwerkelijk opgevolgd kunnen worden.
Waarom automatische monitoring?
Automatische monitoring van missing indexes is vooral interessant wanneer:
- u meerdere SQL Server databases beheert;
- databases regelmatig veranderen;
- tabellen snel groeien;
- performance belangrijk is voor uw applicaties;
- u niet afhankelijk wilt zijn van handmatige controles;
- u databasebeheer structureel wilt organiseren.
De grootste winst zit daarbij niet alleen in het vinden van één ontbrekende index. Het gaat erom dat indexbeheer een terugkerend en aantoonbaar proces wordt.
Conclusie
Ontbrekende indexen ontstaan vaak vanzelf wanneer databases groeien en applicaties veranderen. Het handmatig controleren van alle databases is daardoor moeilijk vol te houden.
Met Database Explorer kunt u het controleren van missing indexes automatiseren. Metingen worden periodiek uitgevoerd, afwijkingen worden gedetecteerd en wanneer dat nodig is wordt automatisch een melding aangemaakt.
Zo wordt performancebeheer geen eenmalige controle, maar een continu proces van meten, signaleren en opvolgen.
Houd uw databases automatisch in de gaten
Wilt u niet wachten tot gebruikers aangeven dat een applicatie langzaam wordt? Met Database Explorer kunt u database-KPI's en performancecontroles automatisch periodiek uitvoeren en afwijkingen direct laten opvolgen.
Ontdek Database Explorer →