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

zhangyuanying發表於2021-10-27

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

1.1  ALTER TABLE 語句

使用 ALTER TABLE 語句修改現有表的結構。

(要修改表的儲存分佈策略,您必須使用 ALTER FRAGMENT 語句而不是 ALTER TABLE 語句。)

語法

 

基本表選項

 

元素

描述

限制

語法

synonym  

要更改的表的同義詞

同義詞及其表必須存在;USETABLENAME 必須未設定

識別符號  

table  

要更改的表的名稱

在當前資料庫中必須存在

識別符號  

語法

GBase 8s 資料庫伺服器按您在 ALTER TABLE 語句中指定的順序執行操作。如果任一操作失敗,那麼整個操作將被取消。

ALTER TABLE 語句不能向一個未分片表中新增分片儲存策略,也不能修改分片表的儲存分片策略。有關新增、修改或刪除表的分片儲存策略的資訊,請參閱 ALTER FRAGMENT 語句  

更改檢視依賴的表可能會使得檢視無效。

警告:   此語句可用的子句對效能的影響各不相同。採取更改操作之前,請檢查 GBase 8s 效能指南 更改表定義 中相應章節來檢查影響和策略。

您可以使用 Basic Table Options 段修改表的結構,方法是新增、修改或刪除列和約束,或更改 extent 大小或鎖定表的粒度。資料庫伺服器按您指定的順序執行更改。如果任一動作失敗,那麼整個操作將會取消。

GBase 8s ,您可以將表與已命名的 ROW 型別關聯,或指定新的儲存空間以儲存大物件資料。您也可以新增或刪除 rowid   列或隱藏列以支援輔助伺服器更新 USELASTCOMMITTED 功能的操作。然而,您不能與其他任何更改一起指定這些選項。

Logging TYPE 選項

使用 Logging TYPE 選項指定該表具有特殊特性,以提高對它的各種批量操作。

Logging TYPE 選項

 

這裡 STANDARD CREATE TABLE 語句的預設選項 ,指定日誌記錄表, RAW 指定非日誌記錄表。

表可具有以下日誌記錄特性。

選項                     作用

STANDARD           日誌記錄表允許回滾、還原和從歸檔恢復。這是預設值。 OLTP 資料庫使用這種型別的還原和限制功能。

RAW                非日誌記錄表不支援主鍵約束、唯一約束或參考約束。 RAW 表可擁有 NOT NULL 約束和 NULL 約束(但不能將這兩個約束設定在同一列)。它們可以被索引和更新。使用這種型別以快速載入資料。

Warning:   使用 RAW 表以快速載入資料。建議您在事務中使用此表前或更改表中的資料前,將日誌記錄型別更改為 STANDARD 並執行零級備份。如果您必須在事務中使用 RAW 表,則將其設定為 Repeatable Read 隔離級別或者以互斥方式鎖定該表以防止併發問題。

Logging TYPE 選項可以將非日誌記錄表(例如: RAW 表)轉換為 STANDARD 表,以支援事務日誌記錄。如果使用此功能,您必須注意資料庫伺服器沒有檢查該表上是否在執行一個零級歸檔。

RAW 表上的操作不會被日誌記錄及恢復,因此 RAW 表一直處於風險中。當資料庫伺服器將一個非日誌記錄的錶轉換為一個 STANDARD 表型別時,您有責在事務使用此表前或更新表中資料時,執行零級備份。否則,執行失敗可能引起在伺服器崩潰的事件中的還原問題。

有關表的日誌記錄型別的更多資訊,請參閱 GBase 8s 管理員指南

Logging TYPE 選項具有以下限制:

在此日誌記錄表從其它日誌記錄類別變更為 STANDARD 之前,您必須執行零級歸檔。

該表不能是 TEMP 表,並且您不能將表的任一這些型別的變更為一個 TEMP 表。

以下示例將一個非日誌記錄表更改為一個使用事務日誌記錄的表:

ALTER TABLE tabnolog TYPE (STANDARD);

以下示例將一個日誌記錄表更改為非日誌記錄表:

ALTER TABLE tablog TYPE (RAW);

ALTER TABLE 語句的 Statistics 選項

使用 ALTER TABLE 語句的 Statistics Options 子句更改分片表或未分片表的 STATCHANGE 屬性的值,和分片表的 STATLEVEL 屬性的值。這些表屬性控制重新計算的閾值和資料分佈統計資訊的粒度。

語法

 

該子句支援與 CREATE TABLE 語句的 Statistics 選項相同的語法。

元素

描述

限制

語法

change_ threshold

定義過時的分佈統計資訊的已更改資料的百分比

必須是在 0 - 100 內的整數

精確數值

用法

Statistics 選項子句可修改表的統計屬性以允許使用者控制 UPDATE STATISTICS 操作(當此 SQL 語句在一個分片表上以 LOW MEDIUM HIGH 的方式執行時)。 ALTER TABLE 語句可以修改這些屬性的指定的或預設值(這些值在表建立時設定或者它們是由之前的 ALTER TABLE 語句設定的)。

Statistics 選項子句可將這兩個表的屬性設定為 STATCHANGE STATLEVEL

STATCHANGE 表指定需要考慮統計過時的更改的最小百分比(從該表中行的 UPDATE DELETE INSERT 操作或從上次計算分佈統計資訊的分片)。您可以指定 0 - 100 內的整數作為更改的百分比,或使用 AUTO 關鍵字應用在 ONCOFIG 檔案或會話環境中的當前的 STATCHANGE 配置引數作為預設的更改的閾值。

UPDATE STATISTICS 語句的 AUTO 關鍵字也能啟用比較用 STATCHANGE 已更改的設定值確定系統目錄中的 ` 統計資訊是否過時的行的比例。包含 AUTO 關鍵字的 UPDATE STATISTICS 語句只在當前的 UPDATE STATISTICS 操作期間啟動舊的統計的檢查(並只選擇性地更新過時或丟失統計資訊的表或分片)。

AUTO_STAT_MODE 配置引數或 AUTO_STAT_MODE 會話環境變數啟用了自動方式, UPDATE STATISTICS 語句使用顯式或預設的 STATCHANGE 值辨別表、索引或統計資訊丟失或過時的分片儲存策略,並只更改丟失的或過時的統計資訊。有關 UPDATE STATISTICS 操作的自動方式的資訊,請參閱 GBase 8s 管理員參考   中有關 AUTO_STAT_MODE 的資訊。

STATLEVEL 屬性可決定資料分佈粒度的級別和分片表的索引統計資訊。它可以採用其中以下三個值之一(如果在建立的時候它沒有值,則可使用 AUTO 作為預設值):

TABLE 指定的該表的所有分佈儲存以表級別建立。

FRAGMENT 指定的分佈是建立和維護每個分片。

AUTO 指定資料庫伺服器在執行時決定分片級別分佈是否重要的標準。這些標準需要需要以下條件為真:

SYSSBSPACENAME 配置引數設定指定了一個現有的 sbspace

該表按 EXPRESSION INTERVAL Rolling Window 、或 LIST 策略分片

該表有超過 100 萬行

如果任何一種標準沒有滿足,那麼資料庫伺服器建立表級別分佈而不是分片級別分佈。

會經常應用這些屬性。如果該 STATLEVEL 設定為 AUTO ,則此設定會重寫預設值。

注:   當初始化資料庫伺服器時,必須設定 SYSSBSPACENAME 配置引數,指定資料庫伺服器儲存分片級別資料分佈統計資訊的 sbspace 。它們作為儲存在 syfragsdist   系統目錄表的 encdist   列中 BLOB 物件。為了使資料庫伺服器支援分配級別統計資訊,SYSSBSPACENAME 配置引數設定必須指定一個現有的 sbspace 。

如果您使用 Statistics 選項子句將 STATLEVEL 屬性設定為 FRAGMENT ,且以下條件之一為真時,資料庫伺服器返回錯誤 -9814(" Invalid default sbspace name "):

未設定 SYSSBSPACENAME 配置引數

onspaces -c -S 命令分配給 SYSSBSPACENAME 指定的 sbspace 不合

 

 

GBASE 官網:


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

相關文章