日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

附加/分離分區

PolarDB PostgreSQL版(兼容Oracle)附加/分離分區的語法完全兼容PostgreSQL。本文詳細介紹了其語法及示例。

概述

  • 附加(Attach)分區: 將一個普通表附加到分區表中,成為分區表的一個分區。

  • 分離(Detach)分區: 將一個分區表的分區分離出來,成為一個普通表。它避免了將分區表中的數據直接刪除,而是將其分離出來作為一個普通表移至別處。

語法說明

附加分區

ALTER TABLE [ IF EXISTS ] name
    ATTACH PARTITION partition_name { FOR VALUES partition_bound_spec | DEFAULT }

上述語法即表示附加一個現有表(該表本身可能已分區)作為目標表的分區。 您可以使用 FOR VALUES 將表附加為特定值的分區,或者使用 DEFAULT 將表附加為默認分區。

在這個附加的過程中,對于目標表中的每個索引,都會在附加的表中創建一個對應的索引。如果對應索引已存在,則將附加到目標表的索引,如同執行 ALTER INDEX ATTACH PARTITION 一樣。

說明

如果現有表是外部表,并且目標表上有 UNIQUE 索引,則當前不允許將該表附加為目標表的分區。

分離分區

ALTER TABLE [ IF EXISTS ] name
    DETACH PARTITION partition_name [ CONCURRENTLY | FINALIZE ]

上述語法即表示將目標分區表中的指定分區分離出來。分離的分區繼續作為獨立表存在,但不再與其分離的表有任何聯系。 經過分離,目標分區表和分離出來的獨立表具有如下變化:

  • 附加到目標表索引的任何索引都將被分離出來。

  • 任何作為目標表中觸發器的克隆而創建的觸發器都將被刪除。

  • 在外鍵約束中引用此分區的任何表上都會獲得共享鎖。例如:假設分區表A引用了分區B作為外鍵,若從分區表B中分離一個分區B_p1,則會對分區表A加上共享鎖。

上述語法中還可以指定CONCURRENTLYFINALIZE

  • 如果指定CONCURRENTLY,則會在低級別鎖定上運行,以避免阻塞可能正在訪問分區表的其他會話。

    在這種模式下,內部使用兩個事務:

    • 在第一個事務期間,對父表和分區都采用SHARE UPDATE EXCLUSIVE鎖,并將分區標記為正在進行分離; 此時,事務已提交,并且使用分區表的所有其他事務都將等待。

    • 所有這些事務完成后,第二個事務將獲取分區表上的SHARE UPDATE EXCLUSIVE和分區上的ACCESS EXCLUSIVE,并且分離過程完成。 與分區約束重復的CHECK約束將添加到分區中。

    說明

    CONCURRENTLY不能在事務塊中運行,并且如果分區表包含默認分區,則不允許使用CONCURRENTLY。

  • 如果指定了FINALIZE,則等待先前取消或中斷的DETACH CONCURRENTLY調用將完成。

示例

附加分區

將cities_partdef附加到cities分區表中作為默認分區。

ALTER TABLE cities
    ATTACH PARTITION cities_partdef DEFAULT;

分離分區

將分區measurement_y2015m12從measurement分區表中分離出來,作為一個獨立的表。

ALTER TABLE measurement
    DETACH PARTITION measurement_y2015m12;