在 AlloyDB Omni 中設定資料欄引擎

本頁面說明如何在 AlloyDB Omni 資料庫叢集啟用或停用資料欄引擎。以及如何為資料欄儲存庫設定適當的初始大小。

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

啟用資料欄引擎

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

如要將 google_columnar_engine.enabled 參數設為 on,請完成下列步驟:

  1. 開啟 DBCluster 資料庫叢集資訊清單。

  2. 在 primarySpec 區段下方,將 google_columnar_engine.enabled 參數新增至 parameters 區塊:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "on"
    

    將 DB_CLUSTER_NAME 替換為資料庫叢集名稱。

  3. RPM 協調器會自動重新啟動資料庫,以套用參數變更。使用下列任一方法套用更新後的 DBCluster 資訊清單:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    更改下列內容:

    • DEPLOYMENT_SPEC_PATH:Deployment 規格目錄的路徑。
    • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 資訊清單路徑。

    Ansible

    1. 建立 update.yml 應對手冊檔案:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      更改下列內容:

      • SSH_USER:您使用 SSH 連線至叢集節點時的使用者名稱。
      • SSH_KEY_PATH:SSH 私密金鑰檔案的本機路徑,用於連線至節點。
    2. 從控制節點執行教戰手冊,並將資源規格做為額外變數傳遞:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      更改下列內容:

      • DEPLOYMENT_SPEC_PATH:Deployment 規格目錄的路徑。
      • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 資訊清單路徑。

設定資料欄儲存庫的大小

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

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

設定記憶

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

如要設定 google_columnar_engine.memory_size_in_mb 參數,請完成下列步驟:

  1. 開啟 DBCluster 資料庫叢集資訊清單。

  2. 在 primarySpec 區段下方,將資料欄引擎設定新增至 parameters 區塊:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "on"
            google_columnar_engine.memory_size_in_mb: "MEMORY_SIZE_MB"
    

    更改下列內容:

    • DB_CLUSTER_NAME:資料庫叢集的名稱。
    • MEMORY_SIZE_MB:要分配給資料欄引擎的記憶體量,以 MB 為單位。
  3. RPM 協調器會自動重新啟動資料庫,以套用參數變更。使用下列任一方法套用更新後的 DBCluster 資訊清單:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    更改下列內容:

    • DEPLOYMENT_SPEC_PATH:Deployment 規格目錄的路徑。
    • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 資訊清單路徑。

    Ansible

    1. 建立 update.yml 應對手冊檔案:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      更改下列內容:

      • SSH_USER:您使用 SSH 連線至叢集節點時的使用者名稱。
      • SSH_KEY_PATH:SSH 私密金鑰檔案的本機路徑,用於連線至節點。
    2. 從控制節點執行教戰手冊,並將資源規格做為額外變數傳遞:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      更改下列內容:

      • DEPLOYMENT_SPEC_PATH:Deployment 規格目錄的路徑。
      • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 資訊清單路徑。

設定儲存空間快取

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

專用裝置

如要為資料欄引擎儲存空間快取設定專用裝置,請完成下列步驟:

  1. 開啟 DBCluster 資料庫叢集資訊清單。

  2. 在 primarySpec 區段下方,將含有 cacheSize 和 localVolume.path 的 columnarSpillToDisk 屬性新增至 features 區塊:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          features:
            columnarSpillToDisk:
              cacheSize: STORAGE_CACHE_SIZE
              localVolume:
                path: COLUMNAR_CACHE_DIR_PATH
    

    更改下列內容:

    • DB_CLUSTER_NAME:資料庫叢集的名稱。
    • STORAGE_CACHE_SIZE:資料欄引擎儲存體快取的大小限制,例如 50Gi。
    • COLUMNAR_CACHE_DIR_PATH:資料欄引擎儲存體快取專用目錄的檔案系統路徑,例如 /mnt/disks/columnarcache。
  3. 使用 alloydbctl 或 Ansible 套用更新後的 DBCluster 資訊清單:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    更改下列內容:

    • DEPLOYMENT_SPEC_PATH:Deployment 規格目錄的路徑。
    • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 資訊清單路徑。

    Ansible

    1. 建立 update.yml 應對手冊檔案:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      更改下列內容:

      • SSH_USER:您使用 SSH 連線至叢集節點時的使用者名稱。
      • SSH_KEY_PATH:SSH 私密金鑰檔案的本機路徑,用於連線至節點。
    2. 從控制節點執行教戰手冊,並將資源規格做為額外變數傳遞:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      更改下列內容:

      • DEPLOYMENT_SPEC_PATH:Deployment 規格目錄的路徑。
      • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 資訊清單路徑。

共用裝置

如果未在 columnarSpillToDisk 下方指定 localVolume.path,資料欄引擎儲存空間快取會共用在 ultraFastCache 下方設定的磁碟快取儲存空間。

如要在共用裝置上設定資料欄引擎儲存空間快取,請完成下列步驟:

  1. 開啟 DBCluster 資料庫叢集資訊清單。

  2. 在 primarySpec 區段下方,將 columnarSpillToDisk 和 ultraFastCache 屬性新增至 features 區塊:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          features:
            columnarSpillToDisk:
              cacheSize: STORAGE_CACHE_SIZE
            ultraFastCache:
              cacheSize: ULTRAFAST_CACHE_SIZE
              localVolume:
                path: DISK_CACHE_DIR_PATH
    

    更改下列內容:

    • DB_CLUSTER_NAME:資料庫叢集的名稱。
    • STORAGE_CACHE_SIZE:資料欄儲存空間快取的大小,例如 50Gi。如未指定這個欄位的值,系統預設會將 5% 的磁碟快取分配給資料欄引擎。
    • ULTRAFAST_CACHE_SIZE:AlloyDB Omni 保留的超快速快取緩衝區大小上限,例如 100Gi。如未設定,系統會使用 localVolume.path 的所有剩餘磁碟空間。
    • DISK_CACHE_DIR_PATH:超快速快取檔案的資料夾路徑,例如 /mnt/disks/chillcache。
  3. 使用 alloydbctl 或 Ansible 套用更新後的 DBCluster 資訊清單:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    更改下列內容:

    • DEPLOYMENT_SPEC_PATH:Deployment 規格目錄的路徑。
    • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 資訊清單路徑。

    Ansible

    1. 建立 update.yml 應對手冊檔案:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      更改下列內容:

      • SSH_USER:您使用 SSH 連線至叢集節點時的使用者名稱。
      • SSH_KEY_PATH:SSH 私密金鑰檔案的本機路徑,用於連線至節點。
    2. 從控制節點執行教戰手冊,並將資源規格做為額外變數傳遞:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      更改下列內容:

      • DEPLOYMENT_SPEC_PATH:Deployment 規格目錄的路徑。
      • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 資訊清單路徑。

啟用向量化 join

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

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

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

如要在資料庫叢集上設定這項參數,請將 google_columnar_engine.enable_vectorized_join: "on" 新增至 DBCluster 資訊清單的 parameters 部分。詳情請參閱「設定 AlloyDB Omni 資料庫參數」。

AlloyDB Omni 預設會將一個執行緒分配給向量化 join 功能。您可以將 google_columnar_engine.vectorized_join_threads 旗標設為較大的值,增加這項功能可用的執行緒數量。最大值為 cpu_count * 2。

手動重新整理資料欄引擎

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

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

SELECT google_columnar_engine_refresh(relation =>'TABLE_NAME');

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

停用資料欄引擎

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

如要將 google_columnar_engine.enabled 參數設為 off,請完成下列步驟:

  1. 開啟 DBCluster 資料庫叢集資訊清單。

  2. 在 primarySpec 區段下,將 parameters 區塊中的 google_columnar_engine.enabled 參數設為 off:

    DBCluster:
      metadata:
        name: DB_CLUSTER_NAME
      spec:
        # ... existing cluster configuration ...
        primarySpec:
          # ... existing primary configuration ...
          parameters:
            google_columnar_engine.enabled: "off"
    

    將 DB_CLUSTER_NAME 替換為資料庫叢集名稱。

  3. RPM 協調器會自動重新啟動資料庫,以套用參數變更。使用下列任一方法套用更新後的 DBCluster 資訊清單:

    alloydbctl

    alloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"

    更改下列內容:

    • DEPLOYMENT_SPEC_PATH:Deployment 規格目錄的路徑。
    • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 資訊清單路徑。

    Ansible

    1. 建立 update.yml 應對手冊檔案:

      ---
      - hosts: localhost
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: SSH_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      更改下列內容:

      • SSH_USER:您使用 SSH 連線至叢集節點時的使用者名稱。
      • SSH_KEY_PATH:SSH 私密金鑰檔案的本機路徑,用於連線至節點。
    2. 從控制節點執行教戰手冊,並將資源規格做為額外變數傳遞:

      ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \
        -e resource_spec="DBCLUSTER_SPECIFICATION"

      更改下列內容:

      • DEPLOYMENT_SPEC_PATH:Deployment 規格目錄的路徑。
      • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 資訊清單路徑。

後續步驟