0

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

我使用 COPY 命令复制了很多数据,但没有VACUUM表后记。在运行我的查询(涉及与多个表的联接)时,查询的结果是错误的 - 未计算未排序区域中新复制的行。

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

4

1 回答 1

1

清理不会对 COPYed 行产生任何影响,这些行实际上是inserts。Vacuum 物理删除之前使用 SQLdelete语句删除的行,该语句仅将这些行标记为已删除,因此它们不参与后续查询,但仍会占用磁盘空间。

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

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

于 2017-09-30T01:41:14.673 回答