如需 AlloyDB 資料欄引擎的概念總覽,請參閱 AlloyDB Omni 資料欄引擎總覽。
啟用資料欄引擎
如要在執行個體上使用資料欄引擎,請將執行個體的 google_columnar_engine.enabled 旗標設為 on。
單一伺服器
如要將 google_columnar_engine.enabled 設為 on,請按照下列步驟操作:
執行
ALTER SYSTEMPostgreSQL 指令:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'如要調整資料欄引擎的設定,請先按照下一節的指示操作,再重新啟動資料庫伺服器。否則,請完成下列步驟,立即重新啟動資料庫伺服器。
如要讓設定參數變更生效,請重新啟動執行中的 AlloyDB Omni 容器。
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
設定資料欄儲存空間大小
在執行個體啟用資料欄引擎後,AlloyDB Omni 會分配部分執行個體記憶體,用於儲存資料欄資料。將高速 RAM 專門用於資料欄儲存庫,可確保 AlloyDB Omni 能盡快存取資料欄資料。
記憶體和儲存空間快取加總,即為資料欄引擎的總容量。
設定記憶體
您可以使用 google_columnar_engine.memory_size_in_mb 旗標,將分配量設為固定大小。
單一伺服器
如要為執行個體設定 google_columnar_engine.memory_size_in_mb 旗標,請按照下列步驟操作:
執行
ALTER SYSTEMPostgreSQL 指令,設定記憶體: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_NAMEPodman
sudo podman restart CONTAINER_NAME
設定儲存空間快取
單一伺服器
您可以在專用或共用裝置上,設定資料欄引擎儲存空間快取。
專用裝置
在專用裝置上,如要為單一伺服器容器啟用 AlloyDB Omni 資料欄引擎儲存空間快取,您必須佈建磁碟並建立檔案系統,然後在 AlloyDB Omni 內掛接快取目錄,最後啟用資料欄儲存空間快取。
佈建磁碟並建立檔案系統
如要為 AlloyDB Omni 資料欄引擎儲存空間快取提供儲存空間,請按照主機作業系統的操作說明準備儲存媒體,例如具名 Docker 磁碟區或專用磁碟上的檔案系統。
非 Linux (macOS、Windows)
在 macOS 或 Windows 上,請使用具名的 Docker 磁碟區做為資料欄儲存空間快取,確保效能最佳化。
-
建立具名磁碟區:
docker volume create COLUMNAR_CACHE_VOLUME
將
COLUMNAR_CACHE_VOLUME替換為磁碟區名稱,例如omni-columnar-cache。 -
執行容器時,請使用這個磁碟區。詳情請參閱「掛接欄式儲存空間快取目錄」。
Linux
如要為 AlloyDB Omni 資料欄引擎儲存空間快取佈建磁碟並建立檔案系統,請在一個或多個磁碟上建立檔案系統,並使用 AlloyDB Omni 將其掛接在容器中。此外,您可以使用 mdadm 或 lvm 等公用程式,將多個磁碟的容量集中在一起,並使用任何檔案系統。下列步驟示範如何在採用 NVMe SSD 的 Ubuntu Compute Engine 執行個體上使用 lvm 和 ext4。
從所有可用的實體裝置建立磁碟區群組:
nvme_prefix="STORAGE_PREFIX" nvme_list=$(ls "$nvme_prefix"*) sudo vgcreate VOLUME_GROUP ${nvme_list}
更改下列內容:
STORAGE_PREFIX:使用非揮發性記憶體高速 (NVMe) 介面連結至虛擬機器的目標本機磁碟路徑前置字元,例如在 Google Cloud上,NVMe 裝置路徑一律以/dev/nvme0n開頭。VOLUME_GROUP:SSD 組合所在的磁碟區群組名稱,例如omni-disk-cache-volume。
-
如要使用上一步中磁碟區群組的可用容量建立邏輯磁碟區,請使用下列指令:
sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP
將
LOGICAL_VOLUME替換為 LVM 視為分區的邏輯磁碟區名稱,例如omni_disk_cache_device。 - 在邏輯磁碟區上建立
ext4檔案系統。如有需要,您可以指定其他ext4選項,但須遵守資料安全性規定。sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
如要在主體機器上建立目錄做為掛接點,並掛接檔案系統,請使用下列指令:
sudo mkdir /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY sudo mount /dev/VOLUME_GROUP/LOGICAL_VOLUME /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY
將
OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY替換成目錄名稱或目錄路徑,做為掛接點,例如omni_columnar_storage_cache_directory。
在 AlloyDB Omni 內掛接資料欄儲存空間快取目錄
在容器中執行的 AlloyDB Omni 啟用磁碟快取前,必須先在 AlloyDB Omni 中掛接快取目錄。
如要在容器內掛接快取目錄,請使用 -v 旗標。
Linux 主機路徑:
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER具名磁碟區 (非 Linux):
-v COLUMNAR_CACHE_VOLUME:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
使用具名磁碟區的 Docker 指令範例:
sudo docker run --name CONTAINER_NAME
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v COLUMNAR_CACHE_VOLUME:/var/lib/alloydb/columnar_cache
-d google/alloydbomni
如要瞭解如何從 Docker 映像檔安裝 AlloyDB Omni 並自訂,請參閱「自訂 AlloyDB Omni 安裝」。
如要在執行 AlloyDB Omni 的 Docker 容器中掛接 OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY,請使用下列指令:
Docker
sudo docker run --name CONTAINER_NAME
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d google/alloydbomni
更改下列內容:
CONTAINER_NAME:要指派給新 AlloyDB Omni 容器的名稱,例如my-omni。PASSWORD:PostgreSQL 資料庫根管理員的密碼。DATA_DIR:您希望 AlloyDB Omni 用於資料目錄的檔案系統路徑。CACHE_DIRECTORY_PATH_INSIDE_CONTAINER:AlloyDB Omni 容器內的快取目錄,對應至主體機器上的掛接點,例如根據容器內的快取目錄值,/omni_disk_cache_directory(類似OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY) 或/disk/cache/inside/container。
Podman
podman run --name CONTAINER_NAME
-e POSTGRES_PASSWORD=PASSWORD
-e PGDATA=/var/lib/postgresql/data/pgdata
-v DATA_DIR:/var/lib/postgresql/data
-v /OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY:/CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
-d docker.io/google/alloydbomni
更改下列內容:
CONTAINER_NAME:要指派給新 AlloyDB Omni 容器的名稱,例如my-omni。PASSWORD:PostgreSQL 資料庫根管理員的密碼。CACHE_DIRECTORY_PATH_INSIDE_CONTAINER:AlloyDB Omni 容器內的快取目錄,會對應至主機上的掛接點,例如根據容器內快取目錄的值,可能是/omni_columnar_storage_cache_directory(類似OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY) 或/disk/cache/inside/container。
如要授予掛接 OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY 的完整存取權限,請使用下列指令:
Docker
sudo docker exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER sudo docker exec -it CONTAINER_NAME chmod -R a+rw /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
Podman
sudo podman exec -it CONTAINER_NAME chown postgres:postgres /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER sudo podman exec -it CONTAINER_NAME chmod -R a+rw /CACHE_DIRECTORY_PATH_INSIDE_CONTAINER
為在容器中執行的 AlloyDB Omni 啟用 AlloyDB Omni 欄式儲存空間快取
如要在資料庫的專用裝置上啟用 AlloyDB Omni 欄式儲存空間快取,請先確認可從 Docker 容器內存取掛接的快取目錄,然後設定適當的 Grand Unified Configuration (GUC) 參數。
設定資料欄儲存空間快取目錄:
ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;將
OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY替換為專用目錄的絕對路徑,AlloyDB Omni 會將資料欄引擎儲存空間快取檔案儲存在該目錄。請確認這個目錄存在,且資料庫使用者具備適當的寫入權限。設定儲存空間快取大小:
ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;將
STORAGE_CACHE_SIZE替換為所需的資料欄儲存空間快取大小 (以 MB 為單位)。根據預設,專用裝置的整體大小會分配給資料欄引擎,不會影響磁碟快取。這個旗標允許的最大值為 1000 *google_columnar_engine.memory_size_in_mb,取兩者中的最小值。如要讓設定參數變更生效,請使用 AlloyDB Omni 重新啟動執行中的容器。
Docker
sudo docker restart CONTAINER_NAMEPodman
sudo podman restart CONTAINER_NAME
共用裝置
如要將資料欄式儲存空間快取設定為使用磁碟快取的共用裝置,請務必先啟用 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_NAMEPodman
sudo podman restart CONTAINER_NAME
啟用向量化 join
資料欄引擎具備向量化 join 功能,可對符合條件的查詢套用向量化處理,提高 join 效能。
啟用向量化 join 後,AlloyDB 查詢規劃工具就能選擇套用向量化 join 運算子,而非標準 PostgreSQL 雜湊 join 運算子。規劃器會比較使用各方法執行查詢的成本,然後做出決定。
如要在執行個體上啟用向量化 join,請將執行個體的 google_columnar_engine.enable_vectorized_join 旗標設為 on。
如要在執行個體上設定這個旗標,請執行 ALTER SYSTEM PostgreSQL 指令:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
AlloyDB Omni 預設會將一個執行緒分配給向量化 join 功能。您可以將 google_columnar_engine.vectorized_join_threads 標記設為較大的值,增加這項功能可用的執行緒數量。最大值為 cpu_count * 2。
手動重新整理資料欄引擎
預設情況下,啟用資料欄引擎後,系統會在背景重新整理資料欄儲存空間。
如要手動重新整理資料欄引擎,請執行下列 SQL 查詢:
SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');
將 TABLE_NAME 替換為要手動重新整理的資料表或具體化檢視表名稱。
停用資料欄引擎
如要停用執行個體的資料欄引擎,請將 google_columnar_engine.enabled 旗標設為 off。
單一伺服器
如要將 google_columnar_engine.enabled 設為 off,請按照下列步驟操作:
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 容器時指派的名稱。
後續步驟
試用程式碼實驗室:在 AlloyDB Omni 使用資料欄引擎,加快數據分析查詢速度。