設定資料欄引擎

如要加快分析查詢速度,並最佳化混合型交易和分析處理 (HTAP) 工作負載的效能,您可以在 AlloyDB for PostgreSQL 執行個體啟用資料欄引擎。您也可以設定資料欄儲存庫的初始記憶體大小,並調整記憶體和儲存空間快取設定,以符合工作負載需求。

如要在 AlloyDB Omni 中使用資料欄引擎,請參閱「在 AlloyDB Omni 中啟用資料欄引擎」。

每項操作都會變更 AlloyDB 執行個體的資料庫旗標值。如要進一步瞭解如何設定資料庫旗標,請參閱「設定執行個體的資料庫旗標」。

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

啟用資料欄引擎

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

設定這個旗標後,執行個體會自動重新啟動。

如要進一步瞭解如何在 AlloyDB 設定資料庫旗標,請參閱「設定執行個體的資料庫旗標」。

設定資料欄儲存庫的大小

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

記憶體和儲存空間快取共同代表資料欄引擎的整體容量。

設定資料欄引擎的記憶體

如果資料欄儲存庫的大小超過執行個體記憶體的分配部分,AlloyDB 會自動使用執行個體的基礎快取層,儲存額外的資料欄資料。

在 AlloyDB 中,您可以將關係、materialized view 和向量索引載入資料欄引擎,加快查詢速度。

根據預設,AlloyDB 會將執行個體 30% 的記憶體分配給資料欄儲存庫。如果是 1 個 vCPU 的執行個體,預設分配量為 10%。如果您調整執行個體大小,AlloyDB 會自動調整總分配量。您可以將執行個體的記憶體修改為建議的上限 50%,但允許 70%。如果是 1 個 vCPU 的執行個體,上限為 20%。無論執行個體大小為何,最低分配量為 128 MB。如要查看執行個體建議的資料欄引擎記憶體大小,請參閱「建議的資料欄儲存庫記憶體大小」。

您也可以使用 google_columnar_engine.memory_size_in_mb 旗標,將分配量設為固定且特定的大小。如要讓 AlloyDB 恢復預設分配,請從執行個體移除旗標。

如要進一步瞭解如何設定或刪除旗標,請參閱「設定執行個體的資料庫旗標」。

設定將向量索引載入資料欄引擎

將 HNSW 或 ScaNN 向量索引填入資料欄引擎後,資料欄引擎會加快向量搜尋速度。HNSW 索引的資料欄引擎加速功能已正式發布 (GA),ScaNN 索引的加速功能則處於預先發布版階段。

如要啟用資料欄索引快取,請將 google_columnar_engine.enable_index_caching 旗標設為 on。

如要停用這項功能,請將旗標設為 off。

設定資料欄引擎的儲存空間快取

您必須根據 google_columnar_engine.memory_size_in_mb 設定調整 google_columnar_engine.storage_cache_size 的大小,因為資料欄引擎記憶體會用於儲存空間快取的記憶體內中繼資料。建議的大小比例約為記憶體大小的 100 到 1000 倍。舉例來說,如果 google_columnar_engine.memory_size_in_mb 為 1024 (1 GB),則必須將 google_columnar_engine.storage_cache_size 設為 100 GB 至 1000 GB 之間。

資料欄引擎的儲存空間快取會依據執行個體級別佈建。

執行個體層級 預設資料欄引擎快取大小
N2 C4A
主要 讀取集區 主要或讀取集區
1 個 vCPU 不適用 不適用 0
2 個 vCPU 18.75 GB 37.5 GB 18.75 GB
4 個 vCPU 18.75 GB 37.5 GB 18.75 GB
8 個 vCPU 18.75 GB 37.5 GB 37.5 GB
16 個 vCPU 37.5 GB 37.5 GB 75 GB
32 個 vCPU 75 GB 75 GB 112.5 GB
48 個 vCPU 不適用 不適用 187.5 GB
64 個 vCPU 150 GB 150 GB 262.5 GB
72 個 vCPU 不適用 不適用 300 GB
96 個 vCPU 300 GB 300 GB 不適用
128 個 vCPU 450 GB 450 GB 不適用

google_columnar_engine.storage_cache_size 旗標可讓您調整資料欄引擎儲存空間快取,但有下表列出的最小值和最大值限制:

執行個體層級 資料欄引擎快取大小下限 資料欄引擎快取大小上限
N2 C4A
主要 讀取集區 主要或讀取集區
1 個 vCPU 不適用 不適用 不適用 0
2 個 vCPU 0 187.5 GB 375 GB 187.5 GB
4 個 vCPU 0 187.5 GB 375 GB 187.5 GB
8 個 vCPU 0 187.5 GB 375 GB 375 GB
16 個 vCPU 0 375 GB 375 GB 750 GB
32 個 vCPU 0 750 GB 750 GB 1125 GB
48 個 vCPU 0 不適用 不適用 1875 GB
64 個 vCPU 0 1500 GB 1500 GB 2625 GB
72 個 vCPU 0 不適用 不適用 3000 GB
96 個 vCPU 0 3000 GB 3000 GB 不適用
128 個 vCPU 0 4500 GB 4500 GB 不適用

監控資料欄引擎的儲存空間快取資料

如要查看及監控資料欄引擎儲存空間快取的資料,可以使用下列指令:

指令 說明
SELECT google_columnar_engine_storage_cache_used(); 傳回已使用的資料欄引擎儲存空間快取大小。
SELECT google_columnar_engine_storage_cache_available(); 傳回未使用的資料欄引擎儲存空間快取大小。
SHOW google_columnar_engine.storage_cache_size; 傳回資料欄引擎儲存體快取的設定大小總量。

啟用向量化 join

資料欄引擎具備向量化 join 功能,可對符合條件的查詢套用向量化處理,提升 join 效能。

啟用向量化 join 後,AlloyDB 查詢計畫工具可選擇套用向量化 join 運算子,而非標準 PostgreSQL 雜湊 join 運算子。規劃器會比較兩種方法的查詢執行成本,然後做出決定。

如要為執行個體啟用向量化 join,請將執行個體的 google_columnar_engine.enable_vectorized_join 旗標設為 on。

如要進一步瞭解如何設定資料庫旗標,請參閱「設定執行個體的資料庫旗標」。

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

手動重新整理資料欄引擎

根據預設,啟用資料欄引擎後,系統會自動在背景重新整理資料欄儲存庫。

如果工作負載的資料修改率很高,例如頻繁執行 INSERT、UPDATE 或 DELETE 作業,您可以在這些變更後手動重新整理資料欄儲存庫,確保索引保持最新狀態。

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

SELECT google_columnar_engine_refresh('TABLE_NAME');

將 TABLE_NAME 替換為要手動重新整理的資料表或 materialized view 名稱。

停用資料欄引擎

如要停用執行個體的資料欄引擎,請將 google_columnar_engine.enabled 旗標設為 off。

如要進一步瞭解如何在 AlloyDB 設定資料庫旗標,請參閱「設定執行個體的資料庫旗標」。

設定這個旗標後,執行個體會自動重新啟動。

疑難排解資料欄引擎問題

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

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

  • 不符合資料欄引擎的需求。

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

  • 查看執行個體的稽核記錄。

  • 確認查詢中的資料表或 materialized view 位於資料欄引擎中。

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

後續步驟