如要在 AlloyDB for PostgreSQL 上使用直欄式引擎,請參閱 Google Cloud「設定直欄式引擎」。
如要瞭解 AlloyDB 資料欄引擎的概念總覽,請參閱「關於 AlloyDB 資料欄引擎」。
啟用資料欄引擎
如要在執行個體上使用資料欄引擎,請將執行個體的 google_columnar_engine.enabled
標記設為 on
。
如要在執行個體上設定這個標記,請按照下列步驟操作:
執行 PostgreSQL 指令
ALTER SYSTEM
:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
如要調整直欄引擎的設定,請按照下一節的說明操作,然後重新啟動資料庫伺服器。否則,請按照接下來的兩個步驟立即重新啟動資料庫伺服器。
設定資料欄儲存空間大小
在執行個體上啟用資料欄引擎後,AlloyDB 會分配部分執行個體記憶體來儲存資料欄資料。將高速 RAM 專用於資料欄儲存庫,可確保 AlloyDB 盡可能快速存取資料欄資料。
您也可以使用 google_columnar_engine.memory_size_in_mb
標記,將分配量設為固定且特定的大小。
如要在執行個體上設定這個標記,請按照下列步驟操作:
執行 PostgreSQL 指令
ALTER SYSTEM
:ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_STORE_SIZE;
將
COLUMN_STORE_SIZE
替換為以 MB 為單位的資料欄商店新大小。
啟用向量化聯結
直欄式引擎具有向量化聯結功能,可對符合條件的查詢套用向量化處理,藉此提升聯結效能。
啟用向量化聯結後,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
。
如要在執行個體上設定這個標記,請按照下列步驟操作:
執行 PostgreSQL 指令
ALTER SYSTEM
:ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
排解資料欄引擎問題
修正「共用記憶體不足」錯誤
如果執行 AlloyDB Omni 時,共用記憶體不足以供資料欄引擎使用,您可能會看到以下錯誤訊息:
Insufficient shared memory for generating the columnar formats.
如要解決這個問題,請指定 AlloyDB Omni 容器可用的共用記憶體量。具體做法會因主機作業系統而異
Linux
使用編輯 /etc/fstab
檔案等技術,增加主機的 /dev/shm
分區大小。
macOS
安裝新的 AlloyDB Omni 容器,並為 --shm-size
旗標指定較大的共用記憶體值。
修正資料欄未填入資料的問題
如果資料欄未在資料欄引擎中填入資料,可能是因為發生下列其中一種情況:
您要新增的資料欄包含不支援的資料類型。
不符合資料欄引擎的規定。
如要找出這個問題的原因,請嘗試下列做法:
後續步驟
請參閱資料欄引擎資料庫標記的完整清單。
瞭解自動欄狀化。