儲存類型規格的 SQL 語法
本節將介紹 NPS SQL 語法的增強功能,以便在資料表和資料庫層級指定和管理資料來源的儲存類型。 這些改進為配置儲存選項提供了更大的靈活性,與現有的 Lakehouse 功能類似。
一旦建立資料表,就無法變更現有資料表的儲存類型。 一個解決方案是使用 CTAS(Create Table As Select)建立新表,指定所需的儲存類型,然後刪除原始表。
資料庫層級設定
- 使用者可以在資料庫層級設定和修改預設儲存類型。
- 除非在個別資料表層級中覆寫,否則資料庫內所有資料表的儲存行為都是一致的。
預設儲存類型
預設的儲存類型在系統層級設定為「區塊」。 它可從控制台進行修改。
建立資料表的儲存類型優先順序
建立資料表時,系統會根據下列優先順序決定儲存類型:
- CREATE TABLE 陳述式
- 會話層級設定
- 資料庫層級設定
- 全系統設定
CREATE TABLE 語句本身是第一優先順序。 如果語句中沒有明確指定 storagetype,系統會檢查是否已套用會話層級設定。 如果沒有,它會尋找在資料庫層級設定的預設儲存類型。 如果資料庫層級設定為 "default",則會使用系統範圍內的 DEFAULT_STORAGE_TYPE。
檢視表格儲存類型
若要確定資料表的儲存類型,請查詢 _v_table 系統檢視:
SELECT TABLENAME, STORAGESOURCE, CASE WHEN STORAGESOURCE = 1 THEN 'BLOCK' WHEN STORAGESOURCE = 2 THEN 'OBJECT' END AS STORAGETYPE FROM _v_table WHERE TABLENAME like 'TEST_%';
表的儲存類型可從系統檢視 _v_table 決定。 這裡,1 代表 block,2 代表 object。
| TABLENAME | STORAGESOURCE | STORAGETYPE |
|-----------|---------------|-------------|
| TEST_OBJ | 2 | OBJECT |
| TEST_BLK | 1 | BLOCK |
表一旦建立,其 storagetype 就無法變更。 要將資料表複製到不同的儲存類型,請使用 CTAS (Create Table As Select) 語句,如下所示:
CREATE TABLE t3 AS (SELECT * FROM t1) STORAGETYPE 'block';
SELECT 語句周圍需要使用括號
您不能指定 storagetype 對於物化視圖。 儲存類型繼承自基本資料表。
從僅支援區塊儲存的版本升級到支援物件儲存的版本時,所有現有資料表都將具有其 storagetype 設定為 'block'。
為資料庫設定 storagetype
在建立資料庫時,可以指定在特定資料庫中建立的資料表應用的預設儲存類型。
CREATE DATABASE聲明- 會話層級設定
- 全系統設定
您可以在建立資料庫時設定資料庫的預設 storagetype:
CREATE DATABASE database1 STORAGETYPE 'block';
如果未指定 storagetype,系統將:
- 檢查階段層級設定。
- 如果找不到,則使用整個系統的預設值。
- 這個值會儲存在內部,作為資料庫的預設值
storagetype。
若要在資料庫層級不設定預設值,請使用:
CREATE DATABASE database1 STORAGETYPE 'default';
若要檢查資料庫的預設 storagetype,請查詢 _v_database 系統檢視:
SELECT DATABASE, STORAGETYPE FROM _v_database;
輸出範例:
DATABASE | STORAGETYPE
----------+----------------
DB1 | BLOCK
DB2 | OBJECT
SYSTEM | SYSTEM DEFAULT
(3 rows)
從僅支援區塊儲存的版本升級到支援物件儲存的版本時,預設 storagetype 所有現有資料庫將設定為 'block'。
可以使用 ALTER DATABASE 命令更改與資料庫相關的預設 storagetype。
-
更改資料庫儲存類型
ALTER DATABASE <database_name> STORAGETYPE '<storage_type>';