儲存類型規格的 SQL 語法

本節將介紹 NPS SQL 語法的增強功能,以便在資料表和資料庫層級指定和管理資料來源的儲存類型。 這些改進為配置儲存選項提供了更大的靈活性,與現有的 Lakehouse 功能類似。

一旦建立資料表,就無法變更現有資料表的儲存類型。 一個解決方案是使用 CTAS(Create Table As Select)建立新表,指定所需的儲存類型,然後刪除原始表。

資料庫層級設定

  • 使用者可以在資料庫層級設定和修改預設儲存類型。
  • 除非在個別資料表層級中覆寫,否則資料庫內所有資料表的儲存行為都是一致的。

預設儲存類型

預設的儲存類型在系統層級設定為「區塊」。 它可從控制台進行修改。

建立資料表的儲存類型優先順序

建立資料表時,系統會根據下列優先順序決定儲存類型:

  1. CREATE TABLE 陳述式
  2. 會話層級設定
  3. 資料庫層級設定
  4. 全系統設定

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

在建立資料庫時,可以指定在特定資料庫中建立的資料表應用的預設儲存類型。

  1. CREATE DATABASE 聲明
  2. 會話層級設定
  3. 全系統設定

您可以在建立資料庫時設定資料庫的預設 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>';