本页面针对与 AlloyDB for PostgreSQL 列式引擎相关的常见问题和疑问提供了建议的修复措施和信息。
您已将引用的列添加到列式引擎,但 SELECT 查询未使用这些列
说明:如需使用列式引擎,查询片段(例如联接和扫描)中引用的所有列都必须位于列存储区中。如果任何被引用的列不在列式引擎中,则查询片段默认使用基于行的存储。
在此上下文中,查询 fragment 是指可以包含多个扫描节点的查询。例如,查询 fragment 可以有两个用于联接的扫描节点。一个扫描节点可能使用非列式格式,而另一个扫描节点可能使用列式格式。扫描节点的所有列(过滤列和投影列)都必须以列式格式填充。同样,一个查询可以包含列式分区,也可以包含非列式分区。
建议的修正:如需验证所有引用的列是否都在列式引擎中,请按照以下步骤操作:
检查支持的数据类型。
确保 AlloyDB 支持您打算与列式引擎搭配使用的所有列的数据类型。如需了解详情,请参阅支持的数据类型。 如果 AlloyDB 不支持关键数据类型,请考虑与 Google Cloud 支持团队联系。
查看支持的运算符。
确保 AlloyDB 支持列式引擎中数据类型对应的运算符。如需详细了解支持的运算符,请参阅可从列式引擎中受益的查询类型。
运行
EXPLAIN COLUMNAR_ENGINE命令。如需识别并解决阻止特定查询使用列式引擎的问题,请运行以下
EXPLAIN COLUMNAR_ENGINE命令:EXPLAIN (COLUMNAR_ENGINE, ANALYZE) SELECT column1, column2 FROM my_table WHERE column3 > 100;
您无法在列式引擎中添加或舍弃表
说明:您想在列式引擎中添加或舍弃表。
建议的解决方法:验证您的用户权限。只有在对表拥有读取权限的情况下,您才能在列式引擎中添加或舍弃表。
列式数据大小超过分配的内存
说明:当列式数据大小超出为列式引擎分配的内存时,您会遇到性能或数据处理问题。
建议的解决方法:为获得最佳性能,请使用 AlloyDB 中的建议功能来确定要填充到列式引擎中的最佳表和列。
如果建议的表和列超过列式引擎的物理内存,多余的列式数据会使用一部分超快速缓存层。对表中不在列式引擎中的剩余数据进行的查询会透明地使用行存储区。
您还可以调整列式引擎内存和存储缓存分配。列式引擎的内存和存储缓存会预配默认大小。您可以手动配置内存和存储缓存。如需更改分配给列式引擎的内存或存储缓存量,请参阅为列式引擎配置内存。