Oracle multicolumn Partitionierung vs mit einer subpartition
Abgesehen von den offensichtlichen, kann mir jemand erklären, was ist der Unterschied zwischen einem mehrspaltigen partitionieren und mit einer subpartition? Und welche ist besser für einen OLTP-Szenario? Für details, siehe Verwalten von Partitionierten Tabellen und Indizes im Oracle Database Administrator ' s Guide.
Eine (dumme) Beispiel für eine partitionierte Tabelle für mehrere Spalten ist:
CREATE TABLE demo1
(
year NUMBER,
month NUMBER,
day NUMBER,
instance NUMBER, /* assuming this can only be 1 or 2 */
other1 VARCHAR2(50),
other2 VARCHAR2(50),
other3 VARCHAR2(50)
)
PARTITION BY RANGE (year,instance)
(
PARTITION data_2009_inst1 VALUES less than (2009,2) TABLESPACE data_2009,
PARTITION data_2009_inst2 VALUES less than (2009,3) TABLESPACE data_2009,
PARTITION data_2010_inst1 VALUES less than (2010,2) TABLESPACE data_2010,
PARTITION data_2010_inst2 VALUES less than (2010,3) TABLESPACE data_2010,
PARTITION data_2011_inst1 VALUES less than (2011,2) TABLESPACE data_2011,
PARTITION data_2011_inst2 VALUES less than (2011,3) TABLESPACE data_2011
);
Ähnlich, Beispiel einer subpartitioned Tabelle:
CREATE TABLE demo2
(
year NUMBER,
month NUMBER,
day NUMBER,
instance NUMBER, /* assuming this can only be 1 or 2 */
other1 VARCHAR2(50),
other2 VARCHAR2(50),
other3 VARCHAR2(50)
)
PARTITION BY RANGE (year)
SUBPARTITION BY LIST (instance) /* Cannot subpartition by range in 10gR2 */
SUBPARTITION template
(
SUBPARTITION i1 VALUES (1),
SUBPARTITION i2 VALUES (2),
SUBPARTITION ix VALUES (DEFAULT)
)
(
PARTITION data_2009 VALUES less than (2010) TABLESPACE data_2009,
PARTITION data_2010 VALUES less than (2011) TABLESPACE data_2010,
PARTITION data_2011 VALUES less than (2012) TABLESPACE data_2011
);
Nun, was ist der Unterschied zwischen diesen Tabellen? Sind Sie nicht "logisch" das gleiche? Ich weiß, das ist viel einfacher, um Partitionen hinzuzufügen, zu demo2 wie Sie brauchen, um split-Partitionen auf demo1, um mehr Partitionen, wie die Zeit vergeht. Was ist besser in einem OLTP-Szenario?
On a side note, der Grund warum ich die Partitionierung auf die INSTANZ-Nummer zu tun hat, die mit Oracle RAC. Ich bin versucht, zu erstellen eine "Instanz Affinität" zu stoppen "hot Blocks" von der Verlangsamung der Datenbank, diese müssen gesendet werden über den interconnect zwischen den RAC-Knoten. (Wir haben empirisch bewiesen, dass diese macht einen großen Unterschied in unseren Tests).
InformationsquelleAutor VinceJS | 2010-12-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es wahrscheinlich nicht einen Unterschied in Ihrem Fall, aber im Allgemeinen sub-Partitionierung ermöglicht eine Aufteilung in 2 verschiedene Möglichkeiten, wie z.B. range -, hash -, range-Liste. Ihre sub-partition Beispiel ist die Auswahl-Liste, sondern entspricht dem single-level-range-Partitionierung. Sie könnten jedoch nicht mit einer einzigen Ebene, wenn Ihre sub-Partitionierung wurde wie in diesem Beispiel aus der doc verlinkt:
InformationsquelleAutor Tony Andrews
Einer der Vorteile von sub-Partitionen ist, dass Sie ermöglichen, einzelne feinkörnige Verwaltung der sub-Partitionen. Zum Beispiel in einem Daten-Archiv Tabelle können sagen, es gibt unterschiedliche Anforderungen an die Speicherung nicht nur das Datum, aber einen anderen Wert als gut.
Mit Ihrem Beispiel vielleicht sind Sie erforderlich, um die Vertraulichkeit der Daten-Instanz mit dem Wert = 1, für 7 Jahre, aber die Daten mit instance = 2 können verworfen werden, nach 4 Jahren. Sub-Partitionierung würde, können Sie drop die sub-Partitionen, die Daten enthalten, die mit instance = 2 unabhängig von den anderen Werten.
InformationsquelleAutor shonky linux user