您好,登錄后才能下訂單哦!
這篇文章主要介紹“Exchange Partition是什么”,在日常操作中,相信很多人在Exchange Partition是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Exchange Partition是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
Pruning
分區裁剪就是執行計劃里面的東西,不用自己去設置什么(select table時不指定的分區名的情況下),優化器可以自動從FROM和WHERE字句里根據分區鍵提取出需要掃描的分區,從而避免全表掃描,減少掃描的數據塊,提高性能。相關的字段dba_tab_partitions.partition_name、dba_tab_partitions.partition_position。
分區裁剪分為靜態和動態,靜態分區裁剪發生在編譯階段,動態分區裁剪發生在執行階段
靜態裁剪:就是oracle知道走哪幾個分區,比如where 條件過濾后知道某個分區,執行計劃的pstart和pstop顯示具體分區號
動態裁剪:如果在解析階段無法知道需要掃描多少分區,只有在運行時才能確定,執行計劃的pstart和pstop顯示KEY(SQ)或:BF0000
PARTITION RANGE ALL:掃描所有分區(具體哪些分區可參考執行計劃中Pstart、Pstop兩個字段)
PARTITION RANGE SINGLE:掃描單個分區(具體哪些分區可參考執行計劃中Pstart、Pstop兩個字段)
PARTITION RANGE ITERATOR:掃描多個分區再做分區合并(具體哪些分區可參考執行計劃中Pstart、Pstop兩個字段)
Reference Partition
Reference Partition針對的業務場景是主外鍵關聯。主表分區之后,借助Reference Partition可以實現自動的子表分區(不管子表上有無分區鍵)。經過Reference Partition分區之后,在同一個主表分區中的數據記錄,對應到的子表記錄,全部都在相同的子表分區上。
Exchange Partition
Exchange Partition就是某個分區和實體表進行數據交換,分區的數據到了實體表,實體表的數據到了分區
You can convert a partition (or subpartition) into a nonpartitioned table, and a nonpartitioned table into a partition (or subpartition) of a partitioned table by exchanging their data segments
其實就是類似改了下數據字典,把分區和實體表的segment頭部換了下,數據存放的block沒有動
現實中使用Exchange Partition常見的場景如:比如有兩張分區表,一張是歷史表,一張是當前表,需要定期把當前表6個月前的數據導入歷史表怎么弄呢?
因為分區表無法直接和分區表進行數據交換,所以我們可以使用Exchange Partition的功能,使用空的實體表做中轉,把當前表6個月前的一個個分區導入到一個個實體表中,再把一個個實體表的數據導入歷史表的一個個空的新建分區(使用空的實體表原因是,當前表和實體表做Exchange時,不會有數據寫入當前表,Exchange后實體表再和歷史表的空的新建分區Exchange時,實體表又變成了空表)
分區表A要把一些數據遷移到分區表B
1、A表和B表的表結構字段順序和字段名稱要一樣
2、如果兩個分區都是interval的話,是無法保證兩個分區的分區名字一樣的
原因是interval是系統自動命名的,中間表轉移到目標表時,目標表必須存在一個分區名字,才能轉換過去,但是目標表的分區名字怎么可能會和源表的分區名字一樣呢
到此,關于“Exchange Partition是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。