Oracle-Partition-ID und subpartition by DATE mit Intervall
Schema an dem ich arbeite hat eine kleine Menge von Kunden, mit vielen Daten pro Kunde.
In der Bestimmung eines Partitionierungs-Strategie, war mein Erster Gedanke, partition by customer_id und dann subpartition by range mit einem Tages-Intervall. Sie können jedoch nicht verwenden Intervall in teilpartitionen.
Letztendlich würde ich gerne eine Möglichkeit, automatisch Partitionen erstellen für neuen Kunden, wie Sie erstellt werden, und auch die automatische tägliche Unterteilungen erstellt, für die Daten der Kunden. Alle Anwendung-Abfragen werden an die customer_id Ebene mit verschiedenen Zeiträumen angegeben.
Diese post ist fast identisch, aber die Antwort umfasst die Umkehrung der partitioning-Strategie, und ich würde noch gerne einen Weg finden, zu erreichen range-range-Intervall-Partitionierung. Ein Weg könnte möglicherweise sein, über einen monatlichen job-Datenbank zu erstellen, die Unterteilungen für die Tage/Monate vor, aber das fühlt sich nicht richtig an.
Vielleicht bin ich falsch in meinen Vermutungen, dass die aktuelle Daten-Struktur würde mehr nutzen aus einer range-range-Intervall-Partitionierungs-Strategie. Wir haben ein paar Kunden, deren Daten Zwerge andere Kunden, so war ich denken von Möglichkeiten, um zu isolieren Kundendaten.
Irgendwelche Gedanken/Anregungen, ein besserer Ansatz?
Danke nochmals!
UPDATE
Hier ist ein Beispiel, was ich war das vorschlagen:
CREATE TABLE PART_TEST(
CUSTOMER_ID NUMBER,
LAST_MODIFIED_DATE DATE
)
PARTITION BY RANGE (CUSTOMER_ID)
INTERVAL (1)
SUBPARTITION BY RANGE (LAST_MODIFIED_DATE)
SUBPARTITION TEMPLATE
(
SUBPARTITION subpart_1206_min values LESS THAN (TO_DATE('12/2006','MM/YYYY')),
SUBPARTITION subpart_0107 values LESS THAN (TO_DATE('01/2007','MM/YYYY')),
SUBPARTITION subpart_0207 values LESS THAN (TO_DATE('02/2007','MM/YYYY')),
...
...
...
SUBPARTITION subpart_max values LESS THAN (MAXVALUE)
)
(
PARTITION part_1 VALUES LESS THAN (1)
)
Ich habe momentan 290 Unterteilungen in der Vorlage. Dies scheint zu funktionieren, außer für einen Haken. In meinen tests, die ich zu finden bin, dass jeder Datensatz mit einem CUSTOMER_ID mehr als 3615 schlägt mit ORA-14400: eingefügter partitionsschlüssel nicht die Karte in eine beliebige partition
Danke Wernfried, schließlich bin ich nur erwarten, dass etwa 2000 Kunden, aber das ist eindeutig in Bezug auf die Partitionierung Strategie. Die Datenbank ist ein multi-vermieteten-system, und mein Ziel war es, einen Weg zu finden, um jede partition Kunden Daten in Segmente zu helfen, Leistung, etc.., also mein Grund für die Partitionierung bei der CUSTOMER_ID-Ebene, und dann subparition von Monat/Jahr.
InformationsquelleAutor rcurrie | 2015-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie eine
RANGE INTERVAL
partition auf Datum und dannLIST
oderRANGE
subpartition. Würde wie folgt Aussehen:Beachten Sie, für die zweite Lösung die Zahl (z.B. ID) der Kunde ist fix. Wenn Sie neue Kunden zu bekommen, müssen Sie ändern Sie die Tabelle und ändern Sie die SUBPARTITION TEMPLATE entsprechend.
Monatlichen Partitionen werden automatisch erstellt, Oracle, sobald neue Werte eingefügt oder aktualisiert werden.
Ich weiß nicht empfehlen, dass Sie verlieren würden die großen Abhängigkeit von der INTERVALL-partition von Oracle erstellt automatisch neue Partitionen (inkl. teilpartitionen), wenn Sie benötigt werden.
Ich war noch in der Planung auf die Verwendung von Intervall-Partitionierung auf CUSTOMER_ID mit einem Abstand(1) mit subpartition Vorlagen. So jedes mal, wenn ein neuer Kunde erstellt wird, wird eine neue partition erstellt und auch die Unterteilungen für die Monate. Ich kann aktualisieren Sie die Frage mit diesem Beispiel...
InformationsquelleAutor Wernfried Domscheit