南大通用GBase8s 常用SQL語句(十七)

zhangyuanying發表於2021-10-27

南大通用GBase8s 常用SQL語句(十七)

更改 STATLEVEL 的示例

假設表 tabFrag   使用分片分佈儲存策略而不是 ROUND ROBIN ,且它包含一個名為 smartblob   BLOB CLOB 列。決定保持該儲存分佈策略,但是使用 TABLE 而不是 FRAGMENT 作為 STATLEVEL 粒度。以下 SQL 語句引用了 tabFrag   表並擁有下列成功的作用:

STATLEVEL 更改為 TABLE ,通過使用 ALTER TABLE Statistics 選項子句。

通過使用 UPDATE STATISTICS LOW 丟棄在 sysfragdist   系統目錄表中 tabFrag.smartblob   的當前分片級別分佈。

通過使用 UPDATE STATISTICS HIGH sysdistrib   系統目標表中的 tabFrag   建立新的表級別統計資訊。

ALTER TABLE tabFrag STATLEVEL TABLE;

                

UPDATE STATISTICS LOW

      FOR TABLE tabFrag (smartblob) DROP DISTRIBUTIONS

                

UPDATE STATISTICS HIGH

       FOR TABLE tabFrag (smartblob);

以上最後一條語句,預設的 0.5  HIGH 決議意味著 tabFrag.smartblob   分佈統計資訊基於近似 200 bins

表的限制

跟隨在 ALTER TABLE 關鍵字之後的表名或同義詞的表必須是當前資料庫中的常駐表。它具有以下限制:

不能是臨時表。

不能是不是當前資料庫中的表。

不能是 CREATE EXTERNAL TABLE 語句定義的表物件。

不能是違例表或診斷表。

此外,您不能用 ALTER TABLE 語句進行以下操作:

新增、刪除或修改與違規表或診斷表關聯的表中列。

RAW 表上定義引用約束或唯一約束。

在列或列的集合上定義 將列作為索引鍵的限制 衝突的索引。

如果已設定了 USETABLENAME 環境變數,那麼您就不能在 ALTER TABLE 語句中指定表的 synonym  

要使用 ALTER TABLE ,您的存取許可權必須至少滿足以下條件之一:

必須在包含該表的資料庫上擁有 DBA 許可權。

必須擁有該表。

必須擁有指定表上的 Alter 許可權並在表駐留的資料庫上擁有 Resource 許可權。

要新增引用約束,必須在引用列或引用表上擁有 DBA 許可權或 References 許可權。

·  要刪除約束,必須擁有 DBA 許可權或是約束的所有者。如果是約束的所有者但不是表的所有者,必須在指定的表上擁有 Alter 許可權。您不需要 References 許可權就能刪除約束。

Enterprise Replication 陰影列

當您更改表時,可以新增或刪除 Enterprise Replication 陰影列。

新增或刪除 Enterprise Replication 陰影列

 

語法

如果當您正在使用 ADD CRCOLS ADD REPLCHECK ADD ERKEY 關鍵字更改表時 Enterprise Replication 是活動的,則您必須用 cdr alter 命令將該表處於更改模式。

Enterprise Replication 使用 ADD CRCOLS 關鍵字建立陰影列( cdrserver   cdrtime )以解決衝突。如果該表的任一列的資料型別需要緩慢更改,那麼更改此表以新增 CRCOLS 陰影列會是一種緩慢的更改操作。緩慢更改操作需要的磁碟空間至少是初始表加日誌空間的兩倍。有關應用 ALTER TABLE 語句效能的資訊,請參閱 Altering a table definition

使用 DROP CRCOLS 關鍵字刪除 cdrserver   cdrtime 陰影列。您必須在刪除 cdrserver   cdrtime 陰影列之前停止複製。

ADD REPLCHECK 關鍵字建立此陰影列( ifx_replcheck ),您可以在此列建立一個索引與主鍵 ,以加速 Enterprise Replication 的一致性檢查的過程。向表中新增 ifx_replcheck   陰影列是一個緩慢的更改操作,它所需要的磁碟空間至少是初始表加日誌空間的兩倍。

使用 DROP REPLCHECK 關鍵字刪除 ifx_replcheck   陰影列。

Enterprise Replication 使用 ADD ERKEY 關鍵字建立陰影列 ifx_erkey_1   ifx_erkey_2   ifx_erkey_3 (代理主鍵)。 更改表以新增 ERKEY 陰影列是一個緩慢的更改操作。

使用 DROP ERKEY 關鍵字刪除 ifx_erkey_1   ifx_erkey_2   ifx_erkey_3   陰影列。

有關更多資訊,請參閱 使用 WITH CRCOLS 選項 使用 WITH REPLCHECK 關鍵字 使用 WITH ERKEY 關鍵字 GBase 8s Enterprise Replication 指南  

示例

以下示例中,往 customer   表中新增了 cdrserver   cdrtime   陰影列:

ALTER TABLE customer ADD CRCOLS;

以下示例中,往 customer   表中新增了陰影列 ifx_replcheck

ALTER TABLE customer ADD REPLCHECK;

以下示例刪除了 customer   表的 ifx_replcheck   列:

ALTER TABLE customer DROP REPLCHECK;

以下示例往 customer 表中新增了 ifx_erkey_1 ifx_erkey_2   ifx_erkey_3   列:

ALTER TABLE customer ADD ERKEY;

使用 ADD ROWIDS 關鍵字 

使用 ADD ROWIDS 關鍵字將名為 rowid   的新列新增至已分片的表。(預設情況下,已分片的表不包含隱藏的 rowid   列。)當新增 rowid   列時,資料庫伺服器為每個在存續期間保持穩定的行分配一個唯一號碼。資料庫伺服器建立一個它用來查詢行的物理位置的索引。新增 rowid   列後,表的每一行包含了另外 4 個 位元組來儲存 rowid   值。

以下示例使用 ADD ROWIDS 選項向分片表 frag1   中新增了一個 INTEGER 型別的新 rowid   列:

ALTER TABLE frag1 ADD ROWIDS;

提示:   僅對分片表使用 ADD ROWIDS 子句。在非分片表中, rowid   列保持不變。建議將主鍵用作存取方法而不是利用 rowid   列。

有關 rowid   列的其它資訊,請參閱 GBase 8s 管理員參考手冊  

使用 DROP ROWIDS 關鍵字 

DROP ROWIDS 關鍵字可刪除您新增(用 ALTER TABLE ALTER FRAGMENT 語句)到分片表上的 rowid   列。

以下示例刪除了 frag1   表的 rowid   列:

ALTER TABLE frag1 DROP RWIDS;

您無法刪除未分片表的 rowid   列。

使用 ADD VERCOLS 關鍵字 

ADD VERCOLS 關鍵字建立用於支援複製伺服器更新的陰影列 ifx_insert_checksum   ifx_row_version

在以下示例中,向 customer   表中新增了 ifx_insert_checksum   ifx_row_version   陰影列:

ALTER TABLE customer ADD VERCOLS;

修改表以新增新的版本控制列是一種快速更改操作。

有關更多資訊,請參閱 使用 WITH VERCOLS 選項 GBase 8s 管理員指南  

使用 DROP VERCOLS 關鍵字 

使用 DROP VERCOLS 關鍵字刪除 ifx_insert_checksum   ifx_row_version   陰影列。

以下示例刪除了 customer   表的這些陰影列:

ALTER TABLE customer DROP VERCOLS;

 

 

GBASE 官網:

 


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70009077/viewspace-2839482/,如需轉載,請註明出處,否則將追究法律責任。

相關文章