Heim > Datenbank > MySQL-Tutorial > Hauptteil

Detaillierte Erklärung des Unterschieds zwischen MySQL-Partition und Oracle 10-Partitionen

黄舟
Freigeben: 2017-03-28 13:41:35
Original
1473 Leute haben es durchsucht

MySQL Häufig verwendete Partitionen sind: Bereich, Liste, Hash, Schlüssel. Häufig verwendete Oracle10g-Partitionen sind: Bereich (Bereichspartition), Liste (Listenpartition), Hash (Hash-Partition), Bereichs-Hash (Range-Hash-Partition), Range-List (List-Composite-Partition). Im Folgenden finden Sie eine detaillierte Einführung in die Unterschiede zwischen Oracle10-Partitionen und MySQL-Partitionen. Werfen wir einen Blick auf

Die häufig verwendeten Oracle10g-Partitionen sind: Bereich (Bereichspartition), Liste (Listenpartition), Hash (Hash-Partition), Range -Hash (Range-Hash-Partition), Range-List (Listen-Composite-Partition).

Bereichspartitionierung: Die Bereichspartitionierung ist eine Tabellenpartitionierungsmethode mit einem breiten Anwendungsbereich. Sie verwendet den Bereich von Spaltenwerten als Partitionierungsbedingung und speichert Datensätze in der Bereichspartition, in der sich der Spaltenwert befindet .

Bei einer Aufteilung nach Zeit werden die Daten im Januar 2010 in Partition a und die Daten im Februar in Partition b abgelegt. Beim Erstellen müssen Sie die Basisspalte und den Bereichswert angeben Partition.

Wenn bei der Partitionierung nach Zeit der Bereich einiger Datensätze vorübergehend nicht vorhergesagt werden kann, können Sie eine Maxvalue-Partition erstellen. Alle Datensätze, die nicht innerhalb des angegebenen Bereichs liegen, werden in der Partition gespeichert, in der sich Maxvalue befindet. Zum Beispiel:

createtable pdba (id number, time date) partition by range (time)
(
partitionp1 values less than (to_date('2010-10-1', 'yyyy-mm-dd')),
partitionp2 values less than (to_date('2010-11-1', 'yyyy-mm-dd')),
partitionp3 values less than (to_date('2010-12-1', 'yyyy-mm-dd')),
partitionp4 values less than (maxvalue)
)
Nach dem Login kopieren

Hash-Partition:

Für Tabellen, die nicht effektiv in Bereiche unterteilt werden können, können Sie die Hash-Partitionierung verwenden, was dennoch hilfreich ist Leistung verbessern. Durch die Hash-Partitionierung werden die Daten in der Tabelle gleichmäßig auf mehrere von Ihnen angegebene Partitionen verteilt. Die Partition, in der sich die Spalte befindet, wird automatisch basierend auf dem Hash-Wert der Partitionsspalte zugewiesen, sodass Sie keine Kontrolle oder Kenntnis darüber haben, in welchem ​​Datensatz platziert wird Bei welcher Partition kann die Hash-Partitionierung auch mehrere abhängige Spalten unterstützen. Zum Beispiel:

createtable test
(
transaction_idnumber primary key,
item_idnumber(8) not null
)
partitionby hash(transaction_id)
(
partitionpart_01 tablespace tablespace01,
partitionpart_02 tablespace tablespace02,
partitionpart_03 tablespace tablespace03
);
Nach dem Login kopieren

Hier geben wir den Tabellenbereich für jede Partition an.

Listenpartition:

Die Listenpartition muss auch den Wert der Spalte angeben, und ihr Partitionswert muss klar angegeben werden. Es kann nur eine Partitionsspalte geben. und es kann nicht wie Bereich oder Hash sein. Bei der Partitionierung werden mehrere Spalten gleichzeitig als partitionsabhängige Spalten angegeben, der entsprechende Wert für eine einzelne Partition kann jedoch mehrere sein.

Beim Partitionieren müssen Sie die möglichen Werte der Partitionsspalte ermitteln. Sobald der eingefügte Spaltenwert nicht innerhalb des Partitionsbereichs liegt, schlägt die Einfügung/Aktualisierung fehl Es wird normalerweise empfohlen, die Listenpartitionierung zu verwenden. Erstellen Sie eine Standardpartition, um Datensätze zu speichern, die nicht innerhalb des angegebenen Bereichs liegen, ähnlich der Maxvalue-Partition in der Bereichspartition.

Bei der Partitionierung basierend auf einem bestimmten Feld, z. B. dem Stadtcode, können Sie den Standardwert angeben und alle nicht partitionierenden Regeldaten in diese Standardpartition einfügen. Zum Beispiel:

createtable custaddr
(
idvarchar2(15 byte) not null,
areacodevarchar2(4 byte)
)
partitionby list (areacode)
(partition t_list025 values ('025'),
partitiont_list372 values ('372') ,
partitiont_list510 values ('510'),
partitionp_other values (default)
)
Nach dem Login kopieren

Kombinierte Partitionierung:

Wenn eine Tabelle nach der Partitionierung nach einer bestimmten Spalte noch groß ist oder es sich um eine andere handelt Bei Bedarf kann die Partition auch unterteilt werden, indem innerhalb der Partition Unterpartitionen erstellt, also Partitionen zusammengefasst werden.

Es gibt zwei Arten kombinierter Partitionen in 10g: Range-Hash und Range-List. Achten Sie auf die Reihenfolge. Die Root-Partition kann nur eine Bereichspartition sein, und die Unterpartition kann eine Hash-Partition oder eine Listenpartition sein.

Zum Beispiel:

createtable test
(
transaction_idnumber primary key,
transaction_datedate
)
partitionby range(transaction_date) subpartition by hash(transaction_id)
subpartitions3 store in (tablespace01,tablespace02,tablespace03)
(
partitionpart_01 values less than(to_date('2009-01-01','yyyy-mm-dd')),
partitionpart_02 values less than(to_date('2010-01-01','yyyy-mm-dd')),
partitionpart_03 values less than(maxvalue)
);
createtable emp_sub_template (deptno number, empname varchar(32), grade number)
partitionby range(deptno) subpartition by hash(empname)
subpartitiontemplate
(subpartitiona tablespace ts1,
subpartitionb tablespace ts2,
subpartitionc tablespace ts3,
subpartitiond tablespace ts4
)
(partitionp1 values less than (1000),
partitionp2 values less than (2000),
partitionp3 values less than (maxvalue)
);
createtable quarterly_regional_sales
(deptnonumber, item_no varchar2(20),
txn_datedate, txn_amount number, state varchar2(2))
tablespacets4
partitionby range (txn_date)
subpartitionby list (state)
(partitionq1_1999 values less than (to_date('1-apr-1999','dd-mon-yyyy'))
(subpartitionq1_1999_northwest values ('or', 'wa'),
subpartitionq1_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq1_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq1_1999_southeast values ('fl', 'ga'),
subpartitionq1_1999_northcentral values ('sd', 'wi'),
subpartitionq1_1999_southcentral values ('ok', 'tx')
),
partitionq2_1999 values less than ( to_date('1-jul-1999','dd-mon-yyyy'))
(subpartitionq2_1999_northwest values ('or', 'wa'),
subpartitionq2_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq2_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq2_1999_southeast values ('fl', 'ga'),
subpartitionq2_1999_northcentral values ('sd', 'wi'),
subpartitionq2_1999_southcentral values ('ok', 'tx')
),
partitionq3_1999 values less than (to_date('1-oct-1999','dd-mon-yyyy'))
(subpartitionq3_1999_northwest values ('or', 'wa'),
subpartitionq3_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq3_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq3_1999_southeast values ('fl', 'ga'),
subpartitionq3_1999_northcentral values ('sd', 'wi'),
subpartitionq3_1999_southcentral values ('ok', 'tx')
),
partitionq4_1999 values less than ( to_date('1-jan-2000','dd-mon-yyyy'))
(subpartitionq4_1999_northwest values ('or', 'wa'),
subpartitionq4_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq4_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq4_1999_southeast values ('fl', 'ga'),
subpartitionq4_1999_northcentral values ('sd', 'wi'),
subpartitionq4_1999_southcentral values ('ok', 'tx')
)
);
Nach dem Login kopieren

MySQL-Partitionen werden häufig verwendet: Bereich, Liste, Hash, Schlüssel

RANGE-Partitionierung (Portionierung): Entsprechend dem Bereichsintervall, zu dem der Spaltenwert gehört, Tupel auf Partitionen verteilen.

 LIST-Partitionierung: Ähnlich wie bei der Partitionierung nach RANGE besteht der Unterschied darin, dass die LIST-Partitionierung basierend auf Spaltenwerten auswählt, die mit einem bestimmten Wert in einem diskreten Wertesatz übereinstimmen.

 HASH-Partitionierung: Partitionierung ausgewählt basierend auf dem Rückgabewert der benutzerdefinierten -Funktion , die Ausdruck die Spalten der in die Tabelle einzufügenden Zeilen verwendet Wert berechnet wird. Diese Funktion kann jeden gültigen Ausdruck in MySQL enthalten, der einen nicht negativen Ganzzahlwert erzeugt.

 KEY-Partitionierung: Ähnlich wie bei der HASH-Partitionierung besteht der Unterschied darin, dass die KEY-Partitionierung nur die Berechnung einer oder mehrerer Spalten unterstützt und der MySQL-Server eine eigene Hash-Funktion bereitstellt.

Das obige ist der detaillierte Inhalt vonDetaillierte Erklärung des Unterschieds zwischen MySQL-Partition und Oracle 10-Partitionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!