如需查看 AlloyDB 列式引擎的概念性概览,请参阅 AlloyDB Omni 列式引擎概览。
启用列式引擎
如需在实例上使用列式引擎,请将实例的 google_columnar_engine.enabled 标志设置为 on。
如需将 google_columnar_engine.enabled 参数设置为 on,请完成以下步骤:
打开
DBCluster数据库集群清单。在
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替换为数据库集群的名称。RPM 编排器会自动重启数据库以应用参数更改。使用以下任一方法应用更新后的
DBCluster清单:alloydbctlalloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"替换以下内容:
DEPLOYMENT_SPEC_PATH:部署规范目录的路径。DBCLUSTER_SPECIFICATION:您修改的DBCluster清单的路径。
Ansible
创建
update.ymlplaybook 文件:--- - 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 私钥文件的本地路径。
从控制节点运行 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 参数,请完成以下步骤:
打开
DBCluster数据库集群清单。在
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:要分配给列式引擎的内存量(以兆字节为单位)。
RPM 编排器会自动重启数据库以应用参数更改。使用以下任一方法应用更新后的
DBCluster清单:alloydbctlalloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"替换以下内容:
DEPLOYMENT_SPEC_PATH:部署规范目录的路径。DBCLUSTER_SPECIFICATION:您修改的DBCluster清单的路径。
Ansible
创建
update.ymlplaybook 文件:--- - 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 私钥文件的本地路径。
从控制节点运行 playbook,并将资源规范作为额外变量传递:
ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \ -e resource_spec="DBCLUSTER_SPECIFICATION"替换以下内容:
DEPLOYMENT_SPEC_PATH:部署规范目录的路径。DBCLUSTER_SPECIFICATION:您修改的DBCluster清单的路径。
配置存储空间缓存
您可以在专用设备或共用设备上配置列式引擎存储缓存。
专用设备
如需为列式引擎存储缓存配置专用设备,请完成以下步骤:
打开
DBCluster数据库集群清单。在
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。
使用
alloydbctl或 Ansible 应用更新后的DBCluster清单:alloydbctlalloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"替换以下内容:
DEPLOYMENT_SPEC_PATH:部署规范目录的路径。DBCLUSTER_SPECIFICATION:您修改的DBCluster清单的路径。
Ansible
创建
update.ymlplaybook 文件:--- - 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 私钥文件的本地路径。
从控制节点运行 playbook,并将资源规范作为额外变量传递:
ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \ -e resource_spec="DBCLUSTER_SPECIFICATION"替换以下内容:
DEPLOYMENT_SPEC_PATH:部署规范目录的路径。DBCLUSTER_SPECIFICATION:您修改的DBCluster清单的路径。
共用设备
如果您未在 columnarSpillToDisk 下指定 localVolume.path,则列式引擎存储缓存会共享在 ultraFastCache 下配置的磁盘缓存存储空间。
如需在共用设备上配置列式引擎存储缓存,请完成以下步骤:
打开
DBCluster数据库集群清单。在
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。
使用
alloydbctl或 Ansible 应用更新后的DBCluster清单:alloydbctlalloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"替换以下内容:
DEPLOYMENT_SPEC_PATH:部署规范目录的路径。DBCLUSTER_SPECIFICATION:您修改的DBCluster清单的路径。
Ansible
创建
update.ymlplaybook 文件:--- - 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 私钥文件的本地路径。
从控制节点运行 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,请完成以下步骤:
打开
DBCluster数据库集群清单。在
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替换为数据库集群的名称。RPM 编排器会自动重启数据库以应用参数更改。使用以下任一方法应用更新后的
DBCluster清单:alloydbctlalloydbctl apply -d "DEPLOYMENT_SPEC_PATH" -r "DBCLUSTER_SPECIFICATION"替换以下内容:
DEPLOYMENT_SPEC_PATH:部署规范目录的路径。DBCLUSTER_SPECIFICATION:您修改的DBCluster清单的路径。
Ansible
创建
update.ymlplaybook 文件:--- - 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 私钥文件的本地路径。
从控制节点运行 playbook,并将资源规范作为额外变量传递:
ansible-playbook -i "DEPLOYMENT_SPEC_PATH" update.yml \ -e resource_spec="DBCLUSTER_SPECIFICATION"替换以下内容:
DEPLOYMENT_SPEC_PATH:部署规范目录的路径。DBCLUSTER_SPECIFICATION:您修改的DBCluster清单的路径。
后续步骤
请参阅列式引擎数据库标志的完整列表。
尝试完成 Codelab 在 AlloyDB Omni 中使用列式引擎加速分析查询。