在 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:部署规范目录的路径。
    • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 清单的路径。

    Ansible

    1. 创建 update.yml playbook 文件:

      ---
      - 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. 从控制节点运行 playbook,并将资源规范作为额外变量传递:

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

      替换以下内容:

      • DEPLOYMENT_SPEC_PATH:部署规范目录的路径。
      • 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:要分配给列式引擎的内存量(以兆字节为单位)。
  3. RPM 编排器会自动重启数据库以应用参数更改。使用以下任一方法应用更新后的 DBCluster 清单:

    alloydbctl

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

    替换以下内容:

    • DEPLOYMENT_SPEC_PATH:部署规范目录的路径。
    • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 清单的路径。

    Ansible

    1. 创建 update.yml playbook 文件:

      ---
      - 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. 从控制节点运行 playbook,并将资源规范作为额外变量传递:

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

      替换以下内容:

      • DEPLOYMENT_SPEC_PATH:部署规范目录的路径。
      • 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:部署规范目录的路径。
    • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 清单的路径。

    Ansible

    1. 创建 update.yml playbook 文件:

      ---
      - 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. 从控制节点运行 playbook,并将资源规范作为额外变量传递:

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

      替换以下内容:

      • DEPLOYMENT_SPEC_PATH:部署规范目录的路径。
      • 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:部署规范目录的路径。
    • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 清单的路径。

    Ansible

    1. 创建 update.yml playbook 文件:

      ---
      - 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. 从控制节点运行 playbook,并将资源规范作为额外变量传递:

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

      替换以下内容:

      • DEPLOYMENT_SPEC_PATH:部署规范目录的路径。
      • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 清单的路径。

启用向量化联接

列式引擎具有向量化联接功能,可通过对符合条件的查询应用向量化处理来提高联接性能。

启用向量化联接后,AlloyDB 查询规划工具可以选择应用向量化联接运算符,而不是标准 PostgreSQL 哈希联接运算符。规划工具通过比较使用每种方法执行查询的成本来做出此决策。

如需在实例上启用向量化联接,请将实例的 google_columnar_engine.enable_vectorized_join 标志设置为 on。

如需在数据库集群上设置此参数,请将 google_columnar_engine.enable_vectorized_join: "on" 添加到 DBCluster 清单的 parameters 部分。如需了解详情,请参阅配置 AlloyDB Omni 数据库参数。

默认情况下,AlloyDB Omni 会将一个线程分配给向量化联接功能。您可以通过将 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,请完成以下步骤:

  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:部署规范目录的路径。
    • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 清单的路径。

    Ansible

    1. 创建 update.yml playbook 文件:

      ---
      - 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. 从控制节点运行 playbook,并将资源规范作为额外变量传递:

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

      替换以下内容:

      • DEPLOYMENT_SPEC_PATH:部署规范目录的路径。
      • DBCLUSTER_SPECIFICATION:您修改的 DBCluster 清单的路径。

后续步骤