Amazon Redshift
数据库开发人员指南 (API Version 2012-12-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

决定是否重建索引

通常,您可以使用交错排序样式来显著提高查询性能,但是随着时间的推移,如果排序键列中值的分配更改,性能可能会下降。

最初使用 COPY 或 CREATE TABLE AS 加载空交错表时,Amazon Redshift 自动构建交错索引。如果您最初使用 INSERT 加载交错表,则需要在之后运行 VACUUM REINDEX 以初始化交错索引。

随着时间的推移,在添加带有新排序键值的行后,如果排序键列中值的分布发生更改,性能可能会下降。如果新行主要处于现有排序键值的范围内,则不必重建索引。可以运行 VACUUM SORT ONLY 或 VACUUM FULL 恢复排序顺序。

查询引擎能够使用排序顺序高效地选择处理查询所需扫描的数据块。对于交错排序,Amazon Redshift 将分析排序键列值以确定最佳排序顺序。如果键值的分配在添加行时发生更改或偏移,则排序策略将不再是最佳的排序策略,并且排序的性能优势也会减小。要重新分析排序键分配,您可以运行 VACUUM REINDEX。重建索引操作非常耗时,因此,要决定表是否将从重建索引中获益,请查询 SVV_INTERLEAVED_COLUMNS 视图。

例如,以下查询将显示使用交错排序键的表的详细信息。

Copy
select tbl as tbl_id, stv_tbl_perm.name as table_name, col, interleaved_skew, last_reindex from svv_interleaved_columns, stv_tbl_perm where svv_interleaved_columns.tbl = stv_tbl_perm.id and interleaved_skew is not null; tbl_id | table_name | col | interleaved_skew | last_reindex --------+------------+-----+------------------+-------------------- 100048 | customer | 0 | 3.65 | 2015-04-22 22:05:45 100068 | lineorder | 1 | 2.65 | 2015-04-22 22:05:45 100072 | part | 0 | 1.65 | 2015-04-22 22:05:45 100077 | supplier | 1 | 1.00 | 2015-04-22 22:05:45 (4 rows)

interleaved_skew 的值是一个比率,指示偏移量。值 1 表示无偏移。如果偏移大于 1.4,VACUUM REINDEX 通常会提高性能,除非偏移是基础集中固有的。

您可以使用 last_reindex 中的数据值来确定自上次重建索引以来经历的时间。