当Redshift使用索引运行查询(比如计数)时,是否排除计算未排序区域中的行?
我使用COPY命令复制了大量数据,但后面没有VACUUM
表。在运行我的查询(涉及多个表的连接)时,查询的结果是错误的 - 未分类区域中新复制的行未计算。
然后,在清空表后,查询开始返回正确的结果。这是预期的行为,还是亚马逊引入的错误?
答案 0 :(得分:1)
吸尘对COPYed行没有任何影响,这些行实际上是插入。真空物理删除先前使用SQL delete
语句删除的行,只有将行标记为已删除,因此它们不参与后续查询但仍占用磁盘空间。
Redshift是一个最终一致的数据库,因此即使您的COPY
命令已经完成,查询中的行也可能不可见。
运行真空基本上是一个碎片整理,它需要重新组织所有行。这(可能)导致表进入一致状态,即所有行都对查询可见。