Inhaltsverzeichnis
1. Bereichspartitionsbereich – der am häufigsten verwendete
a. Bereichslistenpartitionierung
3. Abfrage und Wartung von Tabellenpartitionen
1. Konzept
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);