全部產品
Search
文件中心

Hologres:庫表管理函數

更新時間:Mar 21, 2025

Hologres相容PostgreSQL,支援您設定資料庫和表的屬性。

函數

功能

HG_UPDATE_DATABASE_PROPERTY

用於設定資料庫的Table Group和Shard Count屬性。

SET_TABLE_PROPERTY

用於設定表的屬性,包括索引、分布列、行儲存、列儲存以及生命週期等屬性。

HG_UPDATE_DATABASE_PROPERTY

  • 描述:用於設定資料庫的Table Group和Shard Count屬性。

    CALL HG_UPDATE_DATABASE_PROPERTY ('property', 'value');
  • 使用限制

    僅執行個體的Superuser和資料庫的Owner可以調用HG_UPDATE_DATABASE_PROPERTY函數。

  • 參數說明

    • property:屬性名稱。當前僅支援default_table_group和shard_count兩個屬性,屬性說明如下:

      • default_table_group:設定某個Table Group為預設Table Group。

        說明

        僅Hologres V0.10及以上版本支援使用此參數。如果您的執行個體是V0.10以下版本,您可以進行執行個體升級或加入HologresDingTalk交流群反饋,詳情請參見如何擷取更多的線上支援?

      • shard_count:設定預設Table Group的Shard Count(不建議使用)。

    • value:屬性值。

  • 樣本

    設定預設Table Group為TG120的Table Group,語句如下。

    CALL HG_UPDATE_DATABASE_PROPERTY ( 'default_table_group', 'TG120' );

SET_TABLE_PROPERTY

  • 描述:用於設定表的屬性,包括索引、分布列、行儲存、列儲存以及生命週期等屬性。

    CALL SET_TABLE_PROPERTY ('table_name', 'property', 'value')
    WHERE PROPERTY IN
        orientation
      clustering_key
      segment_key
      bitmap_columns
      dictionary_encoding_columns
      time_to_live_in_seconds
      distribution_key
    說明

    如果您需要對建立的表進行修改、更新和刪除,具體操作請參見ALTER TABLEDROP TABLE

  • 參數說明

    參數

    描述

    table_name

    表名稱。您也可以使用Schema限定表名稱。

    說明
    • 表名稱只能是小寫英文字母a~z、大寫英文字母A~Z、數字以及底線(_)的組合,並且以字母開頭。

    • 如果表名稱有特殊字元,則需要使用雙引號""轉義。由於系統對大小寫不敏感,大寫字母A~Z會被認為是小寫字母a~z

    property

    屬性名稱。

    orientation

    用於指定資料庫的表在Hologres中是列儲存、行儲存還是行列共存。

    說明

    該參數僅支援和CREATE TABLE在同一事務中執行。

    clustering_key

    用於在指定的列建立聚簇索引。

    說明

    該參數僅支援和CREATE TABLE在同一事務中執行。

    segment_key

    用於指定某些列作為分段鍵,例如,指定時間列作為分段鍵。當查詢條件包含分段列時,查詢可以通過分段鍵快速找到相應資料對應的儲存位置。

    說明

    該參數僅支援和CREATE TABLE在同一事務中執行。

    bitmap_columns

    用於在指定列構建位元編碼,快速過濾分段內部的資料。

    說明

    該參數可單獨使用數。

    dictionary_encoding_columns

    用於為指定列的值構建字典映射。

    說明

    字典編碼可以轉換字串的比較為數位比較,加速Group By、Filter等查詢。您可以單獨使用該參數。

    distribution_key

    用於指定資料庫中表的分布策略。

    說明

    該參數僅支援和CREATE TABLE在同一事務中執行。

    time_to_live_in_seconds

    表資料的生命週期,取值為:非負數、整數或浮點數,單位為秒(s)。

    說明

    該參數可單獨使用數。

    value

    屬性值,如果該參數包含列名,並且列名包含大寫字母,則需要添加雙引號""

  • 樣本

    BEGIN;
    CREATE TABLE ORDERS ( 
      O_ORDERKEY              INTEGER NOT NULL,
      O_CUSTKEY        INTEGER NOT NULL,
      O_ORDERSTATUS    TEXT NOT NULL,
      O_TOTALPRICE     DECIMAL(15,2) NOT NULL,
      O_ORDERDATE      DATE NOT NULL,
      O_ORDERPRIORITY  TEXT NOT NULL,  
      O_CLERK          TEXT NOT NULL, 
      O_SHIPPRIORITY   INTEGER NOT NULL,
      O_COMMENT        TEXT NOT NULL);
    CALL SET_TABLE_PROPERTY ('ORDERS', 'clustering_key', 'O_ORDERKEY:asc,O_CUSTKEY:asc');
    CALL SET_TABLE_PROPERTY ('ORDERS', 'segment_key', 'O_ORDERDATE');
    CALL SET_TABLE_PROPERTY ('ORDERS', 'bitmap_columns', 'O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY');
    CALL SET_TABLE_PROPERTY ('ORDERS', 'dictionary_encoding_columns', 'O_ORDERSTATUS,O_ORDERPRIORITY,O_CLERK,O_SHIPPRIORITY');
    CALL SET_TABLE_PROPERTY ('ORDERS', 'time_to_live_in_seconds', '172800');
    COMMIT;