Eine Tabelle mit 50 Millionen Zeilen und Abfragen, die alle durchsuchen. Partitioning zerteilt die Tabelle in kleinere Stücke, und Oracle durchsucht nur die relevanten Partitionen. In unseren Projekten ist es eine der effektivsten Optimierungen, die wir anwenden.
Range Partitioning¶
Der häufigste Typ für Zeitreihen. Eine Bestelltabelle, partitioniert nach Monaten — eine Abfrage für Januar-Bestellungen durchsucht nur eine von zwölf Partitionen. Partition Pruning eliminiert automatisch 11/12 der Daten.
Partitionsverwaltung¶
Monatliche Partitionen: automatische Erstellung neuer (INTERVAL Partitioning in 11g). Archivierung alter: ALTER TABLE DROP PARTITION — sofort, ohne DELETE FROM. Verschieben alter Partitionen auf günstigeren Storage (ILM).
Lokale vs. Globale Indizes¶
Lokale Indizes — ein Index pro Partition. Operationen auf einer Partition (DROP, MOVE) beeinflussen keine Indizes anderer Partitionen. Globale Indizes — über alle Partitionen. Besser für Abfragen ohne Partitionsschlüssel, aber DROP PARTITION invalidiert den globalen Index. Für unseren Einsatz: lokale Indizes.
Performance-Auswirkungen¶
Abfrage auf Monatsdaten: von 45 Sekunden auf 0,8 Sekunden. Full Table Scan eliminiert. Nächtlicher Batch auf neue Daten: läuft nur über die letzte Partition. Statistiken: DBMS_STATS pro Partition statt für die gesamte Tabelle — schneller und genauer.
Wann Partitioning einsetzen¶
Tabellen mit über 10M Zeilen und einer zeitlichen Dimension. Abfragen, die nach Partitionsschlüssel filtern. Bedarf zur Archivierung alter Daten. Hinweis: Partitioning ist eine kostenpflichtige Oracle-Option — prüfen Sie Ihre Lizenz.
Brauchen Sie Hilfe bei der Implementierung?
Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.
Kontaktieren Sie uns