全部產品
Search
文件中心

PolarDB:使用擴充屬性定製列存索引

更新時間:Jul 06, 2024

您可以使用列存索引的擴充屬性來定製列存索引。本文介紹了列存索引的擴充屬性以及使用擴充屬性來定製列存索引的方法。

擴充屬性

pack_shift

用於設定列存索引資料的行組(row group)大小。列存索引資料的行組大小主要影響記憶體駐留部分資料的大小,在表較多或者使用分區表較多的情境下您可以適當進行調整。取值為整數。取值範圍為6~18。未指定行組大小時,預設使用loose_imci_default_pack_shift參數的值。

關於loose_imci_default_pack_shift參數的詳細說明請參見列存索引配置參數說明。您可以在控制台上查看和設定loose_imci_default_pack_shift參數的值,具體操作請參見設定叢集參數和節點參數

codec_opt

用於設定列存索引的壓縮演算法。具體操作請參見設定列存資料壓縮演算法

order_key

用於設定列存索引的排序鍵。具體操作請參見設定列索引的排序鍵

pruner/pruner_minmax/pruner_bloom

用於設定是否在字串列上構建輔助索引來加速資料掃描。具體操作請參見設定列索引查詢過濾演算法

說明

叢集版本為PolarDB MySQL版8.0.1.1.35及以上時,預設會在字串列構建minmax首碼索引和bloom filter索引。

prefix_len

用於設定字串類型minmax pruner的前置長度。單位為字元,取值範圍為1~255。預設值為20。具體操作請參見設定列索引查詢過濾演算法

write_policy

用於設定列存索引資料的寫入策略,主要影響資料佔用的空間大小和寫入效能。取值範圍如下:

  • 0:ForCapacity。表示優先考慮儲存空間,儘可能地將資料切分後跨越多個檔案寫入,以最大化減少內部片段,即每次寫入最多產生1個4 KB的內部片段。

  • 1:ForPerformance。表示優先考慮效能,每次寫入一個ExtentSize的檔案。IO效能最好,內部片段率最大化,空間浪費較多。

  • 2:Skip4K。表示考慮到PFS的特點,16 KB大小的效能基本滿足要求,資料切分邏輯類似ForCapacity。大於4 KB的資料在寫入時完全不考慮4 KB Extent,每次寫入最多產生1個16 KB的內部片段。

  • 3:Tradeoff,與kSkip4K相比較更進一步,當寫入的資料量小於1 MB(IMCI IO單位大小)時等價於ForPerformance,寫入的資料量大於或等於1 MB時,儘可能地將資料分割到不同的檔案中。

未指定write_policy時,預設使用全域參數loose_imci_default_write_policy的值。loose_imci_default_write_policy參數的取值範圍同write_policy。您可以在控制台上查看和設定loose_imci_default_write_policy參數的值,具體操作方法請參見設定叢集參數和節點參數

使用方法

  • 建表時指定擴充屬性。

    CREATE TABLE lineitem (l_orderkey       INTEGER NOT NULL,
                           l_partkey        INTEGER NOT NULL,
                           l_suppkey        INTEGER NOT NULL,
                           l_linenumber     INTEGER NOT NULL,
                           l_quantity       DECIMAL(15,2) NOT NULL,
                           l_extendedprice  DECIMAL(15,2) NOT NULL,
                           l_discount       DECIMAL(15,2) NOT NULL,
                           l_tax            DECIMAL(15,2) NOT NULL,
                           l_returnflag     CHAR(1) NOT NULL,
                           l_linestatus     CHAR(1) NOT NULL,
                           l_shipdate       DATE NOT NULL,
                           l_commitdate     DATE NOT NULL,
                           l_receiptdate    DATE NOT NULL,
                           l_shipinstruct   CHAR(25) NOT NULL,
                           l_shipmode       CHAR(10) NOT NULL,
                           l_comment        VARCHAR(44) NOT NULL
                          ) COMMENT "COLUMNAR=1 <optName>=<optValue>";
  • 通過DDL指定擴充屬性。

    CREATE TABLE lineitem COMMENT "COLUMNAR=1 <optName>=<optValue>";

文法中對應的參數說明如下:

參數

說明

optName

擴充屬性名稱。如pack_shift。

optValue

擴充屬性的值。