使用自动表优化 - Amazon Redshift

使用自动表优化

自动表优化是一种自我调整功能,可通过应用排序键和分配键自动优化表的设计,而无需管理员干预。通过使用自动化功能来调整表的设计,您可以快速入手并获得最快的性能,而无需花费时间手动调整和实施表优化。

自动表优化不断观察查询与表的交互方式。它使用高级人工智能方法选择排序键和分配键,以优化集群工作负载的性能。如果 Amazon Redshift 确定应用键可以提高集群性能,则表将在创建集群之日起数小时内自动更改,对查询的影响最小。

为了充分利用此自动化功能,Amazon Redshift 管理员会创建一个新表,或者更改现有表以使其能够使用自动优化。具有分配样式或排序键 AUTO 的现有表已启用自动化功能。当您对这些表运行查询时,Amazon Redshift 会确定排序键或分配键是否能够提高性能。如果能,Amazon Redshift 会自动修改表,而无需管理员干预。如果运行了最少数量的查询,则会在启动集群后的几小时内应用优化。

如果 Amazon Redshift 确定分配键可以提高查询的性能,则分配样式为 AUTO 的表可以将其分配样式更改为 KEY

启用自动表优化

预设情况下,未显式定义排序键或分配键时创建的表将设置为 AUTO。在创建表时,您还可以手动显式设置排序键或分配键。如果您设置了排序键或分配键,则不会自动管理该表。

要使现有表能够自动优化,请使用 ALTER 语句选项将表更改为 AUTO。您可以选择为排序键定义自动化,但不能为分配键定义自动化(反之亦然)。如果运行 ALTER 语句将表转换为自动表,则会保留现有的排序键和分配样式。

ALTER TABLE table_name ALTER SORTKEY AUTO;
ALTER TABLE table_name ALTER DISTSTYLE AUTO;

有关更多信息,请参阅 ALTER TABLE

最初,表没有分配键或排序键。分配样式设置为 EVENALL,具体取决于表格大小。随着表大小的增大,Amazon Redshift 会应用最佳分配键和排序键。在运行最少数量的查询之后,将在数小时内应用优化。确定排序键优化时,Amazon Redshift 会尝试在表扫描期间优化从磁盘读取的数据块。在确定分配样式优化时,Amazon Redshift 会尝试优化在集群节点之间传输的字节数。

从表中删除自动表优化

您可以从自动优化中删除表。从自动化中删除表包括选择排序键或分配样式。要更改分配样式,请指定特定的分配样式。

ALTER TABLE table_name ALTER DISTSTYLE EVEN;
ALTER TABLE table_name ALTER DISTSTYLE ALL;
ALTER TABLE table_name ALTER DISTSTYLE KEY DISTKEY c1;

要更改排序键,可以定义排序键或选择无。

ALTER TABLE table_name ALTER SORTKEY(c1, c2);
ALTER TABLE table_name ALTER SORTKEY NONE;

监控自动表优化的操作

系统视图 SVV_ALTER_TABLE_RECOMMENDATIONS 记录了当前针对表的 Amazon Redshift Advisor 建议。此视图显示针对所有表的建议,包括为自动优化定义的建议和非为自动优化定义的建议。

要查看某张表是否定义为自动优化,请查询系统视图 SVV_TABLE_INFO。条目仅针对当前会话数据库中可见的表显示。每天两次将建议插入视图中,从创建集群后的数小时内开始。建议可用后,将在一小时内开始。在(Amazon Redshift 或您)应用建议后,该建议将不再显示在视图中。

系统视图 SVL_AUTO_WORKER_ACTION 显示了 Amazon Redshift 执行的所有操作的审计日志,以及表的先前状态。

系统视图 SVV_TABLE_INFO 列出了系统中的所有表,以及一个列,用于指示表的排序键和分配样式是否设置为 AUTO

有关这些系统视图的更多信息,请参阅系统监控(仅已预置)