配置列式引擎

本页介绍了如何在 AlloyDB for PostgreSQL 实例上启用或停用列式引擎。此外,还介绍了如何为其列存储区配置适当的初始大小,以及如何设置内存和存储缓存以实现最佳性能。

如需在使用 AlloyDB Omni 时使用列式引擎,请参阅在 AlloyDB Omni 中启用列式引擎

上述每项操作都涉及更改某个 AlloyDB 实例上的数据库标志的值。如需详细了解如何设置数据库标志,请参阅配置实例的数据库标志

如需了解 AlloyDB 列式引擎的概念概览,请参阅 AlloyDB 列式引擎简介

启用列式引擎

如需在实例上使用列式引擎,请将实例的 google_columnar_engine.enabled 标志设置为 on

设置此标志后,实例会自动重启。

如需详细了解如何在 AlloyDB 中设置数据库标志,请参阅配置实例的数据库标志

配置列存储区的大小

在实例上启用列式引擎后,AlloyDB 会分配实例内存的一部分来存储其列式数据。将高速 RAM 专用于列存储区可确保 AlloyDB 能够尽快访问列式数据。

内存和存储缓存加起来代表列式引擎的总容量。

为列式引擎配置内存

如果列存储空间变得比实例内存的分配部分大,AlloyDB 会自动使用实例的底层缓存层来存储额外的列式数据。

默认情况下,AlloyDB 会将实例内存的 30% 分配给列存储区,如果您调整实例大小,则会自动调整总分配量。您最多可以将实例的内存修改为 50%。如需查找适用于您的实例的建议列式引擎内存大小,请参阅推荐的列存储内存大小

您还可以使用 google_columnar_engine.memory_size_in_mb 标志将分配设置为固定的特定大小。 如需让 AlloyDB 恢复为默认分配,请从实例中移除该标志

如需详细了解如何设置或删除标志,请参阅配置实例的数据库标志

为列式引擎配置存储缓存

列式引擎的存储缓存会根据实例层级进行预配。

实例层级 默认列式引擎缓存大小
主实例 读取副本实例
2 个 vCPU 18.75 GB 37.5 GB
4 个 vCPU 18.75 GB 37.5 GB
8 个 vCPU 18.75 GB 37.5 GB
16 个 vCPU 37.5 GB 37.5 GB
32 个 vCPU 75 GB 75 GB
64 个 vCPU 150 GB 150 GB
96 个 vCPU 300 GB 300 GB
128 个 vCPU 450 GB 450 GB

借助 google_columnar_engine.storage_cache_size 标志,您可以调整列式引擎存储缓存,但需要遵守下表中列出的最小值和最大值限制:

实例层级 列式引擎缓存大小下限 列式引擎缓存大小上限
主实例 读取副本实例
2 个 vCPU 0 187.5 GB 375 GB
4 个 vCPU 0 187.5 GB 375 GB
8 个 vCPU 0 187.5 GB 375 GB
16 个 vCPU 0 375 GB 375 GB
32 个 vCPU 0 750 GB 750 GB
64 个 vCPU 0 1500 GB 1500 GB
96 个 vCPU 0 3000 GB 3000 GB
128 个 vCPU 0 4500 GB 4500 GB

监控列式引擎的存储缓存数据

如需查看列式引擎存储缓存的相关信息,您可以运行以下任一 SQL 查询。

SQL 查询 说明
SELECT google_columnar_engine_storage_cache_used(); 返回已使用的列式引擎存储缓存的大小。
SELECT google_columnar_engine_storage_cache_available(); 返回未使用的列式引擎存储缓存的大小。
SELECT google_columnar_engine_storage_cache_total(); 返回列式引擎配置的存储缓存大小的总量。

启用矢量化联接

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

启用矢量化联接后,AlloyDB 查询规划程序可以选择应用矢量化联接运算符,而不是标准 PostgreSQL 哈希联接运算符。规划程序通过比较使用这两种方法执行查询的费用来做出此决定。

如需在实例上启用向量化联接,请将实例的 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

如需详细了解如何在 AlloyDB 中设置数据库标志,请参阅配置实例的数据库标志

设置此标志后,实例会自动重启。

排查列式引擎问题

如果列未在列式引擎中填充,则可能存在以下情况之一:

  • 您要添加的列包含不受支持的数据类型。

  • 不符合列式引擎的要求。

如需查找此问题的原因,请尝试执行以下操作:

  • 查看实例的审核日志

  • 确认查询中的表或具体化视图位于列式引擎中。

  • 使用 EXPLAIN 语句验证列式引擎的使用情况。

后续步骤