exchange partition原理探究
exchange partition提供了一種在表與表或分割槽與分割槽之間快速遷移資料的方式。exchange partition適用於所有分割槽格式,你可以將資料從分割槽表遷移到非分割槽表,也可以從非分割槽表遷移到分割槽表,或者在range分割槽和hash分割槽之間進行轉換。
由於直接更改資料字典,因此其基本不涉及IO等磁碟操作,效率極其高。下面透過實驗進行說明。
1.環境準備
記錄兩張表的object_id、data_object_id資訊以及相關的儲存資訊。
2.exchange partition
exchange partitoin基本語法如下:
alter table table_name1 exchange partition/subpartition partition_name with table table_name2;
上述命令敲回車後立馬返回成功。下面對資料進行驗證,確認資料遷移是否正確。
可以看到原先t_partition分割槽p0的資料已經交換到了temp表中,同樣temp表的資料也交換到了p0分割槽。初步檢視後,我們進一步檢查一下表儲存以及data_object_id情況。
驚奇的發現,不但temp、分割槽p0對應的表空間進行了互換,其各自的data_object_id同樣進行了對調。
3.結論
上述實驗表的記錄較少,可能不具有代表性。向temp以及分割槽p0分別插入了100w條資料後,再進行exchange partition實驗,發現其速度同樣非常快,僅用38毫秒,限於篇幅,此處只貼上了操作結果截圖:
為瞭解本質,對其進行了10046事件進行跟蹤,以下是10046事件的部分截圖:
日誌可以清楚的看到系統是透過更改資料庫自帶的$檢視,來完成temp和分割槽p0的對調的,進而完成相應資料的遷移。
透過上述實驗驗證了開篇說的:exchange partition透過直接更改資料字典,基本不涉及IO等磁碟操作,效率極其高的觀點。
由於直接更改資料字典,因此其基本不涉及IO等磁碟操作,效率極其高。下面透過實驗進行說明。
1.環境準備
點選(此處)摺疊或開啟
-
create table t_partition(id number,data varchar2(100)) tablespace test
-
partition by range(id)
-
(partition p0 values less than(100),
-
partition p1 values less than(200),
-
partition p2 values less than(300),
-
partition pmax values less than(maxvalue)
-
);
-
-
create table temp(id number,data varchar2(100)) tablespace USERS;
-
-
//temp、t_partition表中插入測試資料
-
insert into temp values(1,'temp');
-
insert into temp values(30,'temp');
-
insert into temp values(99,'temp');
-
commit;
-
insert into t_partition values(5,'t_partition');
-
insert into t_partition values(69,'t_partition');
-
commit;
-
-
//驗證
-
SELECT * FROM temp;
-
ID DATA
-
---------- ---------
-
1 temp
-
30 temp
-
99 temp
-
-
SELECT * FROM t_partition partition(p0);
-
ID DATA
-
---------- -------------------
-
5 t_partition
- 69 t_partition
2.exchange partition
exchange partitoin基本語法如下:
alter table table_name1 exchange partition/subpartition partition_name with table table_name2;
點選(此處)摺疊或開啟
- alter table t_partition exchange partition p0 with table temp;
點選(此處)摺疊或開啟
- SELECT * FROM temp;
-
ID DATA
-
---------- -------------------
-
5 t_partition
-
69 t_partition
-
- SELECT * FROM t_partition partition(p0);
-
ID DATA
-
---------- -------------------
-
1 temp
-
30 temp
- 99 temp
驚奇的發現,不但temp、分割槽p0對應的表空間進行了互換,其各自的data_object_id同樣進行了對調。
3.結論
上述實驗表的記錄較少,可能不具有代表性。向temp以及分割槽p0分別插入了100w條資料後,再進行exchange partition實驗,發現其速度同樣非常快,僅用38毫秒,限於篇幅,此處只貼上了操作結果截圖:
點選(此處)摺疊或開啟
- SELECT count(*) FROM t_partition partition(p0);
-
COUNT(*)
-
----------
-
1000003
-
-
SELECT count(*) FROM TEMP;
-
-
COUNT(*)
-
----------
-
1000002
-
- alter table t_partition exchange partition p0 with table temp;
- Elapsed: 00:00:00.38
日誌可以清楚的看到系統是透過更改資料庫自帶的$檢視,來完成temp和分割槽p0的對調的,進而完成相應資料的遷移。
透過上述實驗驗證了開篇說的:exchange partition透過直接更改資料字典,基本不涉及IO等磁碟操作,效率極其高的觀點。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29827284/viewspace-2135662/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- exchange partition
- exchange partition(轉)
- Pruning、Reference Partition、Exchange Partition
- exchange partition 實驗
- exchange partition 的用法
- [Oracle] Partition table exchange Heap tableOracle
- Exchange Partition的實驗例子
- exchange partition的一些測試
- 巧妙使用exchange partition的一個案例
- 轉摘:EXCHANGE PARTITION those pesky columns
- Exchange partition分割槽結構的“乾坤挪移”
- 分割槽表UNUSED列後的EXCHANGE PARTITION操作
- 使用exchange partition來交換不同schema之間的表
- 記次10g exchange partition很慢的問題
- exchange partition 交換的問題ORA-14130:
- RAC原理探究
- 探究Spring原理Spring
- RunLoop底層原理探究OOP
- zookeeper使用和原理探究
- 【瀏覽器】渲染原理探究瀏覽器
- Promise原理探究及實現Promise
- 底層原理探究(二)RunLoopOOP
- iOS底層原理探究-RunloopiOSOOP
- Oracle12c分割槽新特性之TRUNCATEPARTITION和EXCHANGE PARTITION級聯功能Oracle
- [譯]瀏覽器工作原理探究瀏覽器
- iOS底層原理探究-RuntimeiOS
- ReentrantLock實現原理深入探究ReentrantLock
- 探究Hybrid-APP技術原理APP
- python生成器的原理探究Python
- Python字串駐留的原理探究Python字串
- dotnet 探究 SemanticKernel 的 planner 的原理
- iOS底層原理 - Block本質探究iOSBloC
- Java8 HashMap實現原理探究JavaHashMap
- partition table and partition indexIndex
- PARTITION partition01
- PARTITION partition02
- PARTITION partition04
- Jackson原理探究—Mixins其一