在 AlloyDB Omni 中設定資料欄引擎

選取說明文件版本:

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

如需 AlloyDB 資料欄引擎的概念總覽,請參閱 AlloyDB Omni 資料欄引擎總覽

啟用資料欄引擎

如要在例項上使用資料欄引擎,請將例項的 google_columnar_engine.enabled 旗標設為 on

單一伺服器

如要將 google_columnar_engine.enabled 設為 on,請按照下列步驟操作:

  1. 執行 PostgreSQL ALTER SYSTEM 指令

    ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
    
  2. 如要調整直欄式引擎的設定,請先按照下一節的說明操作,再重新啟動資料庫伺服器。如否,請完成下列步驟,立即重新啟動資料庫伺服器。

  3. 如要讓設定參數變更生效,請重新啟動執行中的 AlloyDB Omni 容器。

    Docker

      sudo docker restart CONTAINER_NAME

    Podman

      sudo podman restart CONTAINER_NAME

設定資料欄儲存空間大小

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

記憶體和儲存空間快取加總,代表資料欄引擎的總容量。

設定記憶體

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

單一伺服器

如要在執行個體上設定 google_columnar_engine.memory_size_in_mb 旗標,請執行下列操作:

  1. 執行 ALTER SYSTEM PostgreSQL 指令,設定記憶體:

    ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_MEMORY_SIZE;
    

    COLUMN_MEMORY_SIZE 替換為新的資料欄儲存空間大小 (以 MB 為單位),例如 256

  2. 如要讓設定參數變更生效,請重新啟動執行中的 AlloyDB Omni 容器。

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

設定儲存空間快取

單一伺服器

您可以在專用或共用裝置上設定資料欄引擎儲存空間快取。

專用裝置

在專用裝置上,如要為單一伺服器容器啟用 AlloyDB Omni 資料欄引擎儲存空間快取,您需要佈建磁碟並建立檔案系統,然後在 AlloyDB Omni 內掛接快取目錄,最後啟用資料欄儲存空間快取。

佈建磁碟並建立檔案系統

如要為 AlloyDB Omni 欄狀引擎儲存空間快取提供儲存空間,請按照主機作業系統的操作說明準備儲存媒體,例如具名 Docker 磁碟區或專用磁碟上的檔案系統。

非 Linux (macOS、Windows)

在 macOS 或 Windows 上,請使用具名的 Docker 磁碟區做為資料欄儲存快取,確保效能最佳化。

  1. 建立具名磁碟區:

    docker volume create COLUMNAR_CACHE_VOLUME

    COLUMNAR_CACHE_VOLUME 替換為磁碟區的名稱,例如 omni-columnar-cache

  2. 執行容器時,請使用這個磁碟區。詳情請參閱「掛接資料欄式儲存空間快取目錄」。

Linux

如要佈建磁碟並為 AlloyDB Omni 欄狀引擎儲存空間快取建立檔案系統,請在磁碟或多個磁碟上建立檔案系統,並在 AlloyDB Omni 容器內掛接該檔案系統。此外,您可以使用 mdadmlvm 等公用程式,透過多個磁碟將容量集中在一起,並使用任何檔案系統。下列步驟示範如何在 Ubuntu Compute Engine 執行個體上使用 NVMe SSD,執行 lvmext4

  1. 從所有可用的實體裝置建立磁碟區群組:

          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
  2. 如要從上一步的磁碟區群組可用容量建立邏輯磁碟區,請使用下列指令:

            sudo lvcreate -n LOGICAL_VOLUME -l 100%FREE VOLUME_GROUP

    LOGICAL_VOLUME 替換為 LVM 視為分割區的邏輯磁碟區名稱,例如 omni_disk_cache_device

  3. 在邏輯磁碟區上建立 ext4 檔案系統。如有需要,您可以指定其他 ext4 選項,但須遵守資料安全規定。
          sudo mkfs.ext4 /dev/VOLUME_GROUP/LOGICAL_VOLUME
  4. 如要在主機上建立當做掛接點的目錄並掛接檔案系統,請使用下列指令:

          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) 參數。

  1. 設定資料欄儲存空間快取目錄:

    ALTER SYSTEM SET google_columnar_engine.omni_storage_cache_directory = OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY;
    

    OMNI_COLUMNAR_STORAGE_CACHE_DIRECTORY 替換為專用目錄的絕對路徑,AlloyDB Omni 會將資料欄引擎儲存空間快取檔案儲存在該目錄中。請確認這個目錄存在,且資料庫使用者具備適當的寫入權限。

  2. 設定儲存空間快取大小:

    ALTER SYSTEM SET google_columnar_engine.storage_cache_size = STORAGE_CACHE_SIZE;
    

    STORAGE_CACHE_SIZE 替換為所需的資料欄儲存空間快取大小 (以 MB 為單位)。根據預設,系統會將專用裝置的整體大小分配給直欄引擎,不會影響磁碟快取。這個標記允許的最大值為 1000 * google_columnar_engine.memory_size_in_mb,取兩者中的最小值。

  3. 如要讓設定參數變更生效,請重新啟動執行中的 AlloyDB Omni 容器。

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

共用裝置

如要將資料欄式儲存空間快取設定為使用磁碟快取的共用裝置,請務必先啟用 AlloyDB Omni 磁碟快取

在共用裝置上設定儲存空間快取,步驟如下:

  1. 設定儲存空間快取:

    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,以較小者為準。

  2. 如要讓設定參數變更生效,請重新啟動執行中的 AlloyDB Omni 容器。

    Docker

    sudo docker restart CONTAINER_NAME

    Podman

    sudo podman restart CONTAINER_NAME

啟用向量化聯結

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

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

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

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

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

單一伺服器

如要將 google_columnar_engine.enabled 設為 off,請按照下列步驟操作:

  1. 執行 PostgreSQL ALTER SYSTEM 指令
ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
  1. 如要讓設定參數變更生效,請重新啟動執行中的 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 容器時指派的名稱。

後續步驟