在VACUUM之前,Redshift查询结果不正确

时间:2017-09-30 01:19:04

标签: amazon-redshift vacuum

当Redshift使用索引运行查询(比如计数)时,是否排除计算未排序区域中的行?

我使用COPY命令复制了大量数据,但后面没有VACUUM表。在运行我的查询(涉及多个表的连接)时,查询的结果是错误的 - 未分类区域中新复制的行未计算。

然后,在清空表后,查询开始返回正确的结果。这是预期的行为,还是亚马逊引入的错误?

1 个答案:

答案 0 :(得分:1)

吸尘对COPYed行没有任何影响,这些行实际上是插入。真空物理删除先前使用SQL delete语句删除的行,只有行标记为已删除,因此它们不参与后续查询但仍占用磁盘空间。

Redshift是一个最终一致的数据库,因此即使您的COPY命令已经完成,查询中的行也可能不可见。

运行真空基本上是一个碎片整理,它需要重新组织所有行。这(可能)导致表进入一致状态,即所有行都对查询可见。