使用自动表优化
自动表优化是一种自我调整功能,可通过应用排序键和分配键自动优化表的设计,而无需管理员干预。通过使用自动化功能来调整表的设计,您可以快速入手并获得最快的性能,而无需花费时间手动调整和实施表优化。
自动表优化不断观察查询与表的交互方式。它使用高级人工智能方法选择排序键和分配键,以优化集群工作负载的性能。如果 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。
最初,表没有分配键或排序键。分配样式设置为 EVEN
或 ALL
,具体取决于表格大小。随着表大小的增大,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
。
有关这些系统视图的更多信息,请参阅系统监控(仅已预置)。