如要瞭解 AlloyDB 資料欄引擎的概念總覽,請參閱「AlloyDB Omni 資料欄引擎總覽」。
啟用資料欄引擎
如要在執行個體上使用資料欄引擎,請將執行個體的 google_columnar_engine.enabled
標記設為 on
。
在執行個體上設定這個標記的步驟,取決於您是在容器中還是 Kubernetes 叢集上執行 AlloyDB Omni。
單一伺服器
如要將 google_columnar_engine.enabled
設為 on
,請按照下列步驟操作:
執行 PostgreSQL 指令
ALTER SYSTEM
:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
如要調整直欄引擎的設定,請按照下一節的操作說明,再重新啟動資料庫伺服器。如否,請完成下列步驟,立即重新啟動資料庫伺服器。
如要讓設定參數變更生效,請重新啟動執行中的 AlloyDB Omni 容器。
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
Kubernetes
如要將 google_columnar_engine.enabled
旗標設為 on
,請修改資料庫叢集資訊清單,在 primarySpec
區段中新增 parameters
屬性:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "15.7.0"
primarySpec:
parameters:
google_columnar_engine.enabled: "on"
將 CLUSTER_NAME
換成資料庫叢集的名稱。也就是建立資料庫叢集時所宣告的名稱。
設定資料欄儲存空間大小
在執行個體上啟用資料欄引擎後,AlloyDB Omni 會分配部分執行個體記憶體來儲存資料欄資料。將高速 RAM 專用於資料欄儲存庫,可確保 AlloyDB Omni 盡可能快速存取資料欄資料。
記憶體和儲存空間快取加總,代表資料欄引擎的整體容量。
設定記憶體
您可以使用 google_columnar_engine.memory_size_in_mb
標記,將分配大小設為固定大小。
設定 AlloyDB Omni 資料欄儲存庫記憶體的步驟,取決於您是在容器還是 Kubernetes 叢集中執行 AlloyDB Omni。
單一伺服器
如要在執行個體上設定 google_columnar_engine.memory_size_in_mb
標記,請執行下列操作:
執行
ALTER SYSTEM
PostgreSQL 指令,設定記憶體:ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
將
COLUMN_MEMORY_SIZE
替換為新的資料欄儲存空間大小 (以 MB 為單位),例如256
。如要讓設定參數變更生效,請重新啟動執行中的 AlloyDB Omni 容器。
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
Kubernetes
如要設定 google_columnar_engine.memory_size_in_mb
旗標,請修改資料庫叢集資訊清單,在 primarySpec
區段中新增 parameters
屬性:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "15.7.0"
primarySpec:
parameters:
google_columnar_engine.memory_size_in_mb: "COLUMN_MEMORY_SIZE"
更改下列內容:
CLUSTER_NAME
:資料庫叢集的名稱。也就是建立資料庫叢集時所宣告的名稱。COLUMN_MEMORY_SIZE
:資料欄儲存空間的新大小,以 MB 為單位,例如256
。
設定儲存空間快取
設定儲存空間快取前,請務必啟用 AlloyDB Omni 磁碟快取。
啟用 AlloyDB Omni 儲存空間快取的步驟,取決於您是在容器中還是 Kubernetes 叢集上執行 AlloyDB Omni。
單一伺服器
按照下列步驟設定儲存空間快取:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
將
STORAGE_CACHE_SIZE
替換為所需的儲存空間快取大小 (以 MB 為單位)。根據預設,系統會將 5% 的磁碟快取分配給直欄引擎。這個旗標允許的最大值為磁碟快取總大小的 50%,或 1000 * google_columnar_engine.memory_size_in_mb,以較小者為準。如要讓設定參數變更生效,請重新啟動執行中的 AlloyDB Omni 容器。
Docker
sudo docker restart CONTAINER_NAME
Podman
sudo podman restart CONTAINER_NAME
Kubernetes
如要為資料庫啟用儲存空間快取,請修改資料庫叢集資訊清單,在 primarySpec
區段的 features
區段中新增 columnarSpillToDisk
屬性:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "15.7.0"
primarySpec:
features:
columnarSpillToDisk:
cacheSize: STORAGE_CACHE_SIZE
ultraFastCache:
cacheSize: ULTRAFAST_CACHE_SIZE
genericVolume:
storageClass: "STORAGE_CLASS_NAME"
...
更改下列內容:
CLUSTER_NAME
:資料庫叢集的名稱。也就是建立資料庫叢集時所宣告的名稱。STORAGE_CACHE_SIZE
:資料欄儲存空間快取的大小,例如5Gi
。如果未指定這個欄位的值,系統預設會將 5% 的磁碟快取分配給直欄引擎。ULTRAFAST_CACHE_SIZE
:快取大小,例如100Gi
。必須大於shared_buffers
。這是選填欄位。如果您未指定這個欄位的值,AlloyDB Omni 會使用磁碟上所有剩餘空間,這適用於容器和 Kubernetes 叢集中的 AlloyDB Omni。如要進一步瞭解計量單位,請參閱「記憶體資源單位」。STORAGE_CLASS_NAME
:超高速快取磁碟區的儲存空間類別名稱,例如local-storage
。
啟用向量化聯結
直欄式引擎具有向量化聯結功能,可對符合條件的查詢套用向量化處理,藉此提升聯結效能。
啟用向量化聯結後,AlloyDB 查詢規劃工具可選擇套用向量化聯結運算子,而非標準 PostgreSQL 雜湊聯結運算子。規劃工具會比較使用每種方法執行查詢的費用,藉此做出這項決定。
如要在執行個體上啟用向量化聯結,請將執行個體的 google_columnar_engine.enable_vectorized_join
旗標設為 on
。
如要在執行個體上設定這個標記,請執行 PostgreSQL ALTER SYSTEM
指令:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
根據預設,AlloyDB Omni 會為向量化聯結功能分配一個執行緒。您可以將 google_columnar_engine.vectorized_join_threads
旗標設為較大的值,增加這項功能可用的執行緒數量。最大值為 cpu_count * 2
。
手動重新整理資料欄引擎
預設情況下,啟用資料欄引擎後,系統會在背景重新整理資料欄儲存空間。
如要手動重新整理資料欄引擎,請執行下列 SQL 查詢:
SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');
將 TABLE_NAME
替換為要手動重新整理的資料表或具體化檢視名稱。
停用資料欄引擎
如要在執行個體上停用 columbar 引擎,請將 google_columnar_engine.enabled
標記設為 off
。
在執行個體上設定這個標記的步驟,取決於您是在單一伺服器上的容器中,還是 Kubernetes 叢集上執行 AlloyDB Omni。
單一伺服器
如要將 google_columnar_engine.enabled
設為 off
,請按照下列步驟操作:
- 執行 PostgreSQL 指令
ALTER SYSTEM
:
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
- 如要讓設定參數變更生效,請重新啟動執行中的 AlloyDB Omni 容器。
Docker
如要重新啟動 AlloyDB Omni 容器,請執行docker container restart
指令:
sudo docker restart CONTAINER_NAME
將 CONTAINER_NAME
替換為您在安裝 AlloyDB Omni 容器時指派的名稱。
Podman
如要重新啟動 AlloyDB Omni 容器,請執行podman container start
指令:
sudo podman restart CONTAINER_NAME
將 CONTAINER_NAME
替換為您在安裝 AlloyDB Omni 容器時指派的名稱。
Kubernetes
如要將 google_columnar_engine.enabled
旗標設為 off
,請修改資料庫叢集資訊清單,在 primarySpec
區段中新增 parameters
屬性:
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: CLUSTER_NAME
spec:
databaseVersion: "15.7.0"
primarySpec:
parameters:
google_columnar_engine.enabled: "off"
將 CLUSTER_NAME
換成資料庫叢集的名稱。也就是建立資料庫叢集時所宣告的名稱。
排解資料欄引擎問題
修正 insufficient shared memory
錯誤
如果執行 AlloyDB Omni 時,共用記憶體不足以供資料欄引擎使用,您可能會看到以下錯誤訊息:
Insufficient shared memory for generating the columnar formats.
如要解決這個問題,請指定 AlloyDB Omni 容器可用的共用記憶體量。具體做法會因主機作業系統而異。
Linux
使用編輯 /etc/fstab
檔案等技術,增加主機的 /dev/shm
分區大小。
macOS
安裝新的 AlloyDB Omni 容器,為 --shm-size
旗標指定較大的共用記憶體值。
修正資料欄未填入資料的問題
如果資料欄引擎未填入資料欄,可能是因為下列其中一項原因:
您要新增的資料欄包含不支援的資料類型。
不符合資料欄引擎的規定。
如要排解這個問題,請嘗試下列方法:
後續步驟
請參閱資料庫旗標的完整清單。
完成 Accelerating analytical queries with columnar engine in AlloyDB Omni Google CodeLab 教學課程。