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

Nach Logische Datenbank-Begrenzungen können Sie bis zu 1'048'575 Partitionen. Sie haben 290*3'615 = 1'048'350. Ich wirklich empfehlen Sie überarbeiten Sie Ihre Partitionierung plan! Wie viele Datensätze erwartest du in der Tabelle? Billionen?
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

Schreibe einen Kommentar