rudolf_kleurenbalk.png

Opblazen van indexen tijdens het laden

De organisatie had als standaard dat voor het laden van de feitentabellen indexen werden gedropt en het laden weer opnieuw opgebouwd (dat is een verstandige aanpak).

Op een feitentabel van 80 miljoen records vonden regelmatig (meerdere jobs per dag) kleine bewerkingen plaats, die niet goed gecombineerd konden worden. Het droppen en weer creeren van de indexen duurde uiteraard enige tijd, waardoor de jobs te lang duurden. De toegepaste oplossing was om de indexen niet meer te droppen. Helaas bliezen de indexen door het veelvuldig verwijderen en inserten van record enorm op, waardoor de database ze niet meer gebruikte voor queries. Hierdoor duurden rapporten eindeloos.

De oplossing voor de korte termijn was de indexen regelmatig opnieuw aan te maken. De oplossing voor de lange termijn was partitionering gecombineerd met laden via partition exchange, waardoor alleen de indexen voor de te laden maand opnieuw hoefden te worden opgebouwd en het laadproces daardoor niet te veel vertraging opliep bij het aanmaken van de indexen. Dit stabiliseerde niet alleen de rapportageperformance, maar verbeterde deze ook aanzienlijk doordat queries meestal maar een beperkt aantal partities raakten.

Tip: Laad nooit tabellen met actieve indexen, anders dan een Primary Key. Als droppen en opnieuw creëren te veel tijd kost, is dat een aanwijzing dat je ontwerp niet goed is.

scheidingslijntje