授予或撤銷碎片的權限 如果您希望授予有用的碎片權限,您必須有一種戰略來控制數據分布。一種有效的戰略是按表達式來將數據記錄碎片化。但是,round-robin 數據記錄分布戰略沒有用,因為每個新數據記錄都會被添加到下一個碎片中。round-robin 分布會清空任何
授予或撤銷碎片的權限
如果您希望授予有用的碎片權限,您必須有一種戰略來控制數據分布。一種有效的戰略是按表達式來將數據記錄碎片化。但是,round-robin 數據記錄分布戰略沒有用,因為每個新數據記錄都會被添加到下一個碎片中。round-robin 分布會清空任何跟蹤數據分布的任何干凈方法,進而消除對碎片授權的真正使用。出于基于表達式分布和 round-robin 分布之間的這一區別,GRANT FRAGMENT 和 REVOKE FRAGMENT 語句僅適用于具有基于表達式碎片的表。
當創建碎片表時,不存在默認的碎片授權。使用 GRANT FRAGMENT 語句在一個或多個碎片上授予插入、更新和刪除權限。如果希望同時授予所有 3 種權限,可使用 GRANT FRAGMENT 語句的 ALL 關鍵字。請記住,不能僅通過命名包含碎片的表來授予碎片權限。您必須命名特定的語句。
當您希望撤銷插入、更新或刪除權限時,可以使用 REVOKE FRAGMENT 語句。此語句會撤銷一個或多個用戶針對碎片表的一個或多個碎片的權限。如果希望撤銷一個表中當前存在的所有權限,可使用 ALL 關鍵字。如果不在命令中指定任何碎片,撤銷的權限將適用于表中當前擁有該權限的所有碎片。
附加或分離碎片
您可以使用 ALTER FRAGMENT ATTACH 和 DETACH 語句來執行碎片操作。ALTER FRAGMENT ATTACH 提供了一種方式來組合兩個未碎片化的表或向碎片表中添加碎片。ALTER FRAGMENT DETACH 提供了一種方式來刪除一個碎片表的碎片。
ATTACH
使用 ALTER FRAGMENT ON TABLE 語句的 ATTACH 子句來將具有相同結構的表組合到一個碎片戰略中。該子句還提供了一種方式,通過利用碎片技術來將大量數據增量地加載到一個現有的表中。
您附加的任何表都必須已在獨立的分區中創建。不能多次附加同一個表。ATTACH 子句中列出的所有使用表必須具有與幸存的表相同的結構。列的數量、名稱、數據類型和相對位置必須相同。
用戶定義的例程以及對一個 ROW 類型列的字段的引用是無效的。不能將一個碎片表附加到另一個碎片表。
所有存儲碎片的 dbspace 都必須具有相同的頁面大小。
在兩個未碎片化的表上執行 ATTACH 操作不能生成一個按間隔或按列表碎片化的幸存表。(如果希望附加兩個未碎片化的表,您可使用 ALTER FRAGMENT 語句的 INIT 選項來為一個未碎片化的表定義中間隔或列表碎片模式,然后使用 ATTACH 選項將第二個表附加到它。)
對于按間隔碎片化的幸存表,具有以下限制:
對于由安全策略保護的碎片表,如果未滿足任何以下條件,將一個碎片附加到該表的操作將會失敗:
如果由于未滿足一個或多個上述條件,導致 ATTACH 操作失敗,可以使用 ALTER TABLE 語句使兩個表的模式相等,然后在修改的表上再次執行 FRAGMENT ATTACH 語句。
當將具有相同表結構的表轉換為一個表中的碎片時,您允許數據庫服務器管理碎片,而不是允許應用程序來管理碎片。分布模式可以是 round-robin 或基于表達式。
要從兩個或多個結構相同的未碎片化表中創建一個碎片表,ATTACH 子句必須在附加列表中包含幸存表。附加列表是 ATTACH 子句中的一個表列表。
要在新創建的單個碎片表中包含 rowid 列,可首先附加所有表,然后使用 ALTER TABLE 語句添加 rowid。
將一個表附加到一個碎片表
要將一個未碎片化的表附加到一個已碎片化的表,未碎片化的表必須已在一個獨立的 dbspace 中創建,并且必須具有與碎片表相同的表結構。
當將一個或多個表附加到一個碎片表時,consumed_table 必須是未碎片化的。
在 ATTACH 操作中使用 ONLINE 關鍵字。
ONLINE 關鍵字要求數據庫服務器在內部提交 ALTER FRAGMENT ATTACH 工作(如果沒有錯誤),以及向幸存表應用一個意向獨占鎖,而不是獨占鎖。獨占鎖適用于使用表,這些表必須是未碎片化的表。
執行 ATTACH 后的索引
幸存表上分離的索引會保留相同的碎片戰略。也就是說,分離的索引不會自動調整來適應幸存表的新碎片。
在支持事務日志的數據庫中,ATTACH 操作會依據幸存表的新碎片戰略擴展幸存表上的任何附加索引。使用表的所有行將采用這些自動調整的索引。
在 IBM Informix 的無日志記錄的數據庫中,ATTACH 操作不會依據幸存表上的新碎片戰略來擴展幸存表上的索引。要依據幸存表上的新碎片戰略來擴展一個附加索引的碎片戰略,必須丟棄該索引并在幸存表上重新創建它。
一些 ALTER FRAGMENT ... ATTACH 操作可能導致數據庫服務器更新索引結構。當在這些情況下重新構建一個索引時,關聯的列分布會自動重新計算,并且該索引可供查詢優化器在為附加了碎片的表設計查詢計劃時使用。
對于 ALTER FRAGMENT ... ATTACH 自動為其重建了 B 型樹索引的一個(或一組)索引列,重新計算的列分布統計信息等同于 HIGH 模式下由 UPDATE STATISTICS 語句所創建的分布。
如果重新構建的索引不是 B 型樹索引,自動重新計算的統計信息將對應于 LOW 模式下由 UPDATE STATISTICS 語句所創建的分布。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com