在 AlloyDB Omni 中設定資料欄引擎

選取文件版本:

本頁說明如何啟用或停用 AlloyDB Omni 資料庫叢集的資料欄引擎。並說明如何為資料欄商店設定適當的初始大小。

如要在 AlloyDB for PostgreSQL 上使用直欄式引擎,請參閱 Google Cloud「設定直欄式引擎」。

如要瞭解 AlloyDB 資料欄引擎的概念總覽,請參閱「關於 AlloyDB 資料欄引擎」。

啟用資料欄引擎

如要在執行個體上使用資料欄引擎,請將執行個體的 google_columnar_engine.enabled 標記設為 on

如要在執行個體上設定這個標記,請按照下列步驟操作:

  1. 執行 PostgreSQL 指令 ALTER SYSTEM

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. 如要調整直欄引擎的設定,請按照下一節的說明操作,然後重新啟動資料庫伺服器。否則,請按照接下來的兩個步驟立即重新啟動資料庫伺服器。

  3. 停止資料庫伺服器。

  4. 啟動資料庫伺服器。

設定資料欄儲存空間大小

在執行個體上啟用資料欄引擎後,AlloyDB 會分配部分執行個體記憶體來儲存資料欄資料。將高速 RAM 專用於資料欄儲存庫,可確保 AlloyDB 盡可能快速存取資料欄資料。

您也可以使用 google_columnar_engine.memory_size_in_mb 標記,將分配量設為固定且特定的大小。

如要在執行個體上設定這個標記,請按照下列步驟操作:

  1. 執行 PostgreSQL 指令 ALTER SYSTEM

    ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_STORE_SIZE;
    

    COLUMN_STORE_SIZE 替換為以 MB 為單位的資料欄商店新大小。

  2. 停止資料庫伺服器。

  3. 啟動資料庫伺服器。

啟用向量化聯結

直欄式引擎具有向量化聯結功能,可對符合條件的查詢套用向量化處理,藉此提升聯結效能。

啟用向量化聯結後,AlloyDB 查詢規劃工具可選擇套用向量化聯結運算子,而非標準 PostgreSQL 雜湊聯結運算子。規劃工具會比較使用這兩種方法執行查詢的費用,然後做出這項決定。

如要在執行個體上啟用向量化聯結,請將執行個體的 google_columnar_engine.enable_vectorized_join 旗標設為 on

如要在執行個體上設定這個標記,請執行 PostgreSQL ALTER SYSTEM 指令

ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';

AlloyDB 預設會為向量化聯結功能分配一個執行緒。您可以將 google_columnar_engine.vectorized_join_threads 旗標設為較大的值,增加這項功能可用的執行緒數量。

手動重新整理資料欄引擎

根據預設,啟用直欄引擎後,系統會在背景自動重新整理直欄存放區。在某些情況下,您可能需要手動重新整理資料欄儲存空間,例如自動重新整理功能未重新整理含有大量無效區塊的關係時。

如要手動重新整理資料欄引擎,請執行下列 SQL 查詢:

SELECT google_columnar_engine_refresh('TABLE_NAME');

TABLE_NAME 替換為要手動重新整理的資料表或具體化檢視名稱。

停用資料欄引擎

如要在執行個體上停用 columbar 引擎,請將 google_columnar_engine.enabled 標記設為 off

如要在執行個體上設定這個標記,請按照下列步驟操作:

  1. 執行 PostgreSQL 指令 ALTER SYSTEM

    ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
    
  2. 停止資料庫伺服器。

  3. 啟動資料庫伺服器。

排解資料欄引擎問題

修正「共用記憶體不足」錯誤

如果執行 AlloyDB Omni 時,共用記憶體不足以供資料欄引擎使用,您可能會看到以下錯誤訊息:

Insufficient shared memory for generating the columnar formats.

如要解決這個問題,請指定 AlloyDB Omni 容器可用的共用記憶體量。具體做法會因主機作業系統而異

Linux

使用編輯 /etc/fstab 檔案等技術,增加主機的 /dev/shm 分區大小。

macOS

安裝新的 AlloyDB Omni 容器,並為 --shm-size 旗標指定較大的共用記憶體值。

修正資料欄未填入資料的問題

如果資料欄未在資料欄引擎中填入資料,可能是因為發生下列其中一種情況:

  • 您要新增的資料欄包含不支援的資料類型。

  • 不符合資料欄引擎的規定。

如要找出這個問題的原因,請嘗試下列做法:

  • 確認查詢中的資料表或具體化檢視區塊位於直欄引擎中。

  • 使用 EXPLAIN 陳述式,驗證資料欄引擎的使用情況。

後續步驟