大數(shù)據(jù)“復(fù)活”記
1604
2025-03-31
一、什么是分區(qū)表
GaussDB(DWS)數(shù)據(jù)庫支持的分區(qū)表為范圍分區(qū)表。范圍分區(qū)表即為將數(shù)據(jù)基于范圍映射到每一個分區(qū),這個范圍是由創(chuàng)建分區(qū)表時指定的分區(qū)鍵決定的。這種分區(qū)方式是最為常用的,并且分區(qū)鍵經(jīng)常采用日期,例如將銷售數(shù)據(jù)按照月份進行分區(qū)。同時普通表無法轉(zhuǎn)換為分區(qū)表,只能通過創(chuàng)建新的分區(qū)表將普通表中的數(shù)據(jù)導(dǎo)入到分區(qū)表中。所以需要根據(jù)業(yè)務(wù)提前規(guī)劃是否使用分區(qū)表。
二、分區(qū)表的優(yōu)勢
分區(qū)表相比較普通表的優(yōu)勢十分顯著,主要包括一些幾個方面。
改善查詢性能:對分區(qū)對象的查詢可以僅搜索自己關(guān)心的分區(qū),很大程度上提高檢索效率。
增強可用性:如果分區(qū)表的某個分區(qū)出現(xiàn)故障,表在其他分區(qū)的數(shù)據(jù)仍然可用。
方便維護:如果分區(qū)表的某個分區(qū)出現(xiàn)故障,需要修復(fù)數(shù)據(jù),只修復(fù)該分區(qū)即可。
均衡I/O:可以把不同的分區(qū)映射到不同的磁盤以平衡I/O,改善整個系統(tǒng)性能。
三、分區(qū)表操作
CREATE TABLE staffS_p1
(
staff_ID?????? NUMBER(6) not null,
FIRST_NAME???? VARCHAR2(20),
LAST_NAME????? VARCHAR2(25),
EMAIL????????? VARCHAR2(25),
PHONE_NUMBER?? VARCHAR2(20),
HIRE_DATE????? DATE,
employment_ID? VARCHAR2(10),
SALARY???????? NUMBER(8,2),
COMMISSION_PCT NUMBER(4,2),
MANAGER_ID???? NUMBER(6),
section_ID???? NUMBER(4)
)
PARTITION BY RANGE (HIRE_DATE)
(
PARTITION HIRE_19950501 VALUES LESS THAN ('1995-05-01 00:00:00'),
PARTITION HIRE_19950502 VALUES LESS THAN ('1995-05-02 00:00:00'),
PARTITION HIRE_maxvalue VALUES LESS THAN (MAXVALUE)
);
該表是一個典型的分區(qū)表,以時間作為分區(qū)鍵。
分區(qū)表和普通表一樣支持增刪改查,在該基礎(chǔ)上可以對單個分區(qū)進行查詢。
Select * from staffS_p1 partition HIRE_19950502;
即可查詢staffS_p1表上HIRE_19950502分區(qū)里的所有數(shù)據(jù)。
alter語法可以刪除分區(qū),同時也包括分區(qū)里的所有數(shù)據(jù)。
alter table drop partition
同時有split語法可以將一個分區(qū)分割為多個分區(qū)
alter table staffS_p1 split partition HIRE_maxvalue at('1995-05-03 00:00:00')into(partition HIRE_19950503,partition HIRE_maxvalue1);
將原來的HIRE_maxvalue分區(qū)以1995-05-03 00:00:00為切割點分割成兩部分。
既然可以將一個分區(qū)分割為多個分區(qū),就意味著也可以將多個分區(qū)合并成一個分區(qū),通過merge into語法即可實現(xiàn)。
Alter table staffS_p1 merge partitions HIRE_19950501,HIRE_19950502 into partition HIRE_19950502;
將HIRE_19950501,HIRE_19950502兩個分區(qū)合并成HIRE_19950502一個分區(qū)。
alter table staffS_p1 exchange partition (HIRE_19950502) with table normal_tbl;
exchange語法可以將普通表和分區(qū)表進行交換,但exchange對普通表要求比較高,有如下一些條件:
普通表和分區(qū)的列數(shù)目相同,對應(yīng)列的信息嚴(yán)格一致,包括:列名、列的數(shù)據(jù)類型、列約束、列的Collation信息、列的存儲參數(shù)、列的壓縮信息等。
普通表和分區(qū)的表壓縮信息嚴(yán)格一致。
普通表和分區(qū)的分布列信息嚴(yán)格一致。
普通表和分區(qū)的索引個數(shù)相同,且對應(yīng)索引的信息嚴(yán)格一致。
普通表和分區(qū)的表約束個數(shù)相同,且對應(yīng)表約束的信息嚴(yán)格一致。
普通表不可以是臨時表和unlogged表。
交換分區(qū)的普通表和分區(qū)表必須在同一個邏輯集群或節(jié)點組(NodeGroup)中。
完成交換后,普通表和分區(qū)的數(shù)據(jù)被置換,同時普通表和分區(qū)的表空間信息被置換。此時,普通表和分區(qū)的統(tǒng)計信息變得不可靠,需要對普通表和分區(qū)重新執(zhí)行analyze。同時需要注意的是,需要進行exchange的表的表結(jié)構(gòu)在創(chuàng)建時就必須匹配,如果執(zhí)行了ddl操作,則無法進行exchange。
以上一些分區(qū)表的語法很大程度上提高了分區(qū)表的可用性與靈活性,加強了分區(qū)表的功能,方便了用戶使用。
想了解GuassDB(DWS)更多信息,歡迎微信搜索“GaussDB DWS”關(guān)注微信公眾號,和您分享最新最全的PB級數(shù)倉黑科技,后臺還可獲取眾多學(xué)習(xí)資料哦~
EI企業(yè)智能 Gauss AP 數(shù)據(jù)倉庫服務(wù) GaussDB(DWS)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。