本页介绍了如何在 AlloyDB Omni 数据库集群上启用或停用列式引擎。此外,还介绍了如何为其列存储区配置适当的初始大小。
如需在 Google Cloud上使用 AlloyDB for PostgreSQL 时使用列式引擎,请参阅配置列式引擎。
如需了解 AlloyDB 列式引擎的概念概览,请参阅 AlloyDB 列式引擎简介。
启用列式引擎
如需在实例上使用列式引擎,请将实例的 google_columnar_engine.enabled
标志设置为 on
。
如需在实例上设置此标志,请执行以下操作:
运行
ALTER SYSTEM
PostgreSQL 命令:ALTER SYSTEM SET google_columnar_engine.enabled = 'on'
如果您想调整列式引擎的配置,请先按照下一部分中的说明操作,然后再重启数据库服务器。否则,请立即按照后续两步重启数据库服务器。
配置列存储的大小
在实例上启用列式引擎后,AlloyDB 会分配实例内存的一部分来存储其列式数据。将高速 RAM 专用于列存储区可确保 AlloyDB 能够尽快访问列式数据。
您还可以使用 google_columnar_engine.memory_size_in_mb
标志将分配设置为固定的特定大小。
如需在实例上设置此标志,请执行以下操作:
运行
ALTER SYSTEM
PostgreSQL 命令:ALTER SYSTEM SET google_columnar_engine.memory_size_in_mb = COLUMN_STORE_SIZE;
将
COLUMN_STORE_SIZE
替换为列存储的新大小(以兆字节为单位)。
启用矢量化联接
列式引擎具有向量化联接功能,该功能可通过对符合条件的查询应用向量化处理来提高联接性能。
启用矢量化联接后,AlloyDB 查询规划程序可以选择应用矢量化联接运算符,而不是标准 PostgreSQL 哈希联接运算符。规划程序通过比较使用这两种方法执行查询的费用来做出此决定。
如需在实例上启用向量化联接,请将实例的 google_columnar_engine.enable_vectorized_join
标志设置为 on
。
如需在实例上设置此标志,请运行 ALTER SYSTEM
PostgreSQL 命令:
ALTER SYSTEM SET google_columnar_engine.enable_vectorized_join = 'on';
AlloyDB 默认会向矢量化联接功能分配一个线程。您可以通过将 google_columnar_engine.vectorized_join_threads
标志设置为较大的值来增加此功能可用的线程数量。
手动刷新列式引擎
默认情况下,启用列式引擎后,该引擎会设置为在后台自动刷新列存储。在某些情况下,您可能需要手动刷新列存储区,例如,如果自动刷新未刷新包含大量无效分块的关系。
如需手动刷新列引擎,请运行以下 SQL 查询:
SELECT google_columnar_engine_refresh('TABLE_NAME');
将 TABLE_NAME
替换为您要手动刷新的表或具体化视图的名称。
停用列式引擎
如需停用实例上的 Columbar 引擎,请将 google_columnar_engine.enabled
标志设置为 off
。
如需在实例上设置此标志,请执行以下操作:
运行
ALTER SYSTEM
PostgreSQL 命令:ALTER SYSTEM SET google_columnar_engine.enabled = 'off'
排查列式引擎问题
修复“共享内存不足”错误
如果您运行 AlloyDB Omni 时没有足够的共享内存供列式引擎使用,则可能会看到以下错误:
Insufficient shared memory for generating the columnar formats.
您可以通过指定可供 AlloyDB Omni 容器使用的共享内存量来解决此问题。具体方法因主机操作系统而异
Linux
使用编辑 /etc/fstab
文件等方法,增加宿主机的 /dev/shm
分区的大小。
macOS
安装新的 AlloyDB Omni 容器,为 --shm-size
标志指定更大的共享内存值。
修复了列未填充的问题
如果列未在列式引擎中填充,则可能存在以下情况之一:
您要添加的列包含不受支持的数据类型。
不符合列式引擎的要求。
如需查找此问题的原因,请尝试执行以下操作:
后续步骤
请参阅列式引擎数据库标志的完整列表。
了解自动列化。