Detaillierte Erläuterung der Oracle-Tabellenpartition

Inhaltsverzeichnis

1. Konzept

2. Art und Funktionsweise

1. Bereichspartitionsbereich – der am häufigsten verwendete

2. Partitionsliste auflisten

3. Hash-Partitions-Hash

4. Partitionen kombinieren

a. Bereichslistenpartitionierung

b. Range-Hash-Partitionierung

3. Abfrage und Wartung von Tabellenpartitionen


1. Konzept

Tischfläche:
        Es handelt sich um eine Sammlung einer oder mehrerer Datendateien. Alle Datenobjekte werden im angegebenen Tabellenbereich gespeichert, der Hauptspeicher ist jedoch die Tabelle und wird daher als Tabellenbereich bezeichnet.
Partitionstabelle:
        Teilen Sie eine Tabelle nach bestimmten Bedingungen in mehrere Tabellen auf, um die Abfragegeschwindigkeit und Anwendungsleistung zu verbessern. Logischerweise ist es immer noch ein ganzer Tisch. Das heißt, einen Obstkorb in verschiedene Körbe nach Kategorien zu ordnen, was leicht zu finden ist.

2. Art und Funktionsweise

1. Bereichspartitionsbereich – der am häufigsten verwendete

Bei der Bereichspartitionierung handelt es sich um eine Partitionierung nach dem angegebenen Wertebereich, und der Partitionsschlüssel ist normalerweise das Datum.

--按照哪个列的哪个范围进行分区
create table table_name()
partition by range(分区列)
(
partition 分区1 values less than (值1),
partition 分区2 values less than (值2),
...
partition 分区n values less than (maxvalue)
)

说明:
    values less than 指定分区上限,每个分区除第一个分区外会有下限,即前一个分区的上限。
    如上语句所示,分区2的范围为[值1,值2).
    maxvalue 表示不确定的值,这个值高于其他任何分区或分区键的值。

2. Partitionsliste auflisten

Wenn eine Spalte nur wenige Werte enthält, kann die Listenpartitionierung verwendet werden. Zum Beispiel nach deptno in der emp-Tabelle

--按照哪个列的值进行分区
create table table_name()
partition by list (列)
(
partition 分区1 values(列值1),
partition 分区2 values(列值2),
...
)

3. Hash-Partitions-Hash

Partitionieren Sie entsprechend dem Hashwert des Felds, um eine möglichst gleichmäßige Verteilung der Daten zu gewährleisten. Die spezifische Partition wird von Oracle bestimmt.

create table table_name()
partition by hash(列名)
(
partition 分区名1,
partition 分区名2,
...
)

4. Partitionen kombinieren

Basierend auf der Kombination der beiden Partitionen werden die Partitionen innerhalb einer Partition als Unterpartitionen bezeichnet.

a. Bereichslistenpartitionierung

--范围列表分区
create table 表名()
partition by range(列名1) subpartition by list(列名2)
(
    partition 分区名1 values less than(值)
    (
        subpartition 子分区名 values (列值),
        ...
    ),
    partition 分区名2 values less than(值)
    (
        ....
    )
)

b. Range-Hash-Partitionierung

--范围散列分区
create table table_name()
partition by range(列1) subpartition by hash(列2,列3...)
(
    partition 分区名1 values less than (值)
    (
        subpartition 子分区1,
        subpartition 子分区2,
        ...
    ),
    partition 分区名2 values less than (值)
    (
    ......
    )
)

3. Abfrage und Wartung von Tabellenpartitionen

Zu den Operationen an Tabellenpartitionen gehören: Abfragen, Hinzufügen, Löschen, Abschneiden, Zusammenführen, Teilen, Umbenennen usw.

Mit Ausnahme der Abfrage ähnelt die spezifische Syntax der Operation der der DDL-Sprache und beginnt mit alter table.

--添加分区
alter table 表 add parition 分区名 values less than(分界值)
添加的分区界限须高于最后一个分区界限


--删除分区
alter table 表 drop partition 分区名;
如果删除的分区是表中的唯一分区,那么分区不能删除,要想删除,必须先删除表。

--截断分区
alter table 表名 truncate partition 分区名;
截断某个分区是指删除某个分区中的数据,并不会删除分区,也不会删除其它分区中的数据。
但当表中即使只有一个分区时,也可以截断该分区。


--合并分区
alter table 表名 merge partition 分区名1,分区名2 into partition 分区名2;
合并相邻分区成一个,结果分区将采用较高的分区界限,且不能合并到界限低的分区。

--拆分分区
alter table 表名 split partition 分区名 at(值) 
into (partition 分区1, partition 分区2);
将一个分区拆为两个,拆分后原分区不再存在,不能对hash类型的分区进行拆分

--重命名表分区
alter table 表名 rename partition 原分区名 to 新分区名;

--查询分区
select * from 表名; 全表查询(包括所有分区)
select * from 表名 partition(分区名1);

Acho que você gosta

Origin blog.csdn.net/weixin_44826393/article/details/127514102
Recomendado
Clasificación