Amazon redshift Amazon红移和删除性能

Amazon redshift Amazon红移和删除性能,amazon-redshift,Amazon Redshift,我有两个红移的表格-t1和t2 t2已包含约30万条记录 t1包含约10000条记录 我需要根据id字段删除t1中已经存在于t2中的所有记录 为此,我将执行以下查询(其中一个): 或 或 在我对真实数据执行此操作之前,我想问一下——从性能角度来看,在红移中使用此类查询是一个好主意,还是有其他(更好的)技术用于此类情况?执行此操作的最大性能因素将是t1和t2的分布,而不是查询结构。这些表是否基于列id的键分布 尽管如此,我还是建议您使用“delete-using”结构。所有这些查询都将t1和t2连

我有两个红移的表格-
t1
t2

t2
已包含约30万条记录

t1
包含约10000条记录

我需要根据
id
字段删除
t1
中已经存在于
t2
中的所有记录

为此,我将执行以下查询(其中一个):


在我对真实数据执行此操作之前,我想问一下——从性能角度来看,在红移中使用此类查询是一个好主意,还是有其他(更好的)技术用于此类情况?

执行此操作的最大性能因素将是t1和t2的分布,而不是查询结构。这些表是否基于列id的键分布

尽管如此,我还是建议您使用“delete-using”结构。所有这些查询都将t1和t2连接在一起,最好在本机表上这样做。红移查询计划器应该看穿其他两个查询中的子选择,但为什么要冒错过优化的风险呢


请记住,完成此操作后,建议进行真空(仅删除)/分析(在所有正在运行的转换结束时)。由于这两个操作现在都是自动执行的(如果启用),因此应该介绍您,但如果您在删除后将数据添加到t1中,您将需要在适当的位置进行完全真空。

感谢您提供详细的答案!我可以为这两个表选择DISTKEY。现在它们都是均匀分布的,但我可以将其更改为由
id
列分配。从到期日开始,如果两个表中都有
id DISTKEY
,并且提到了行数,那么删除过程需要多长时间?在适当的红移簇上。这是一秒,还是几分钟或几小时的工作?这将是快-秒。对于红移,3亿行和1000万行位于较小的一侧。速度将取决于群集大小/类型以及排序键。为一列扫描300M行需要一点时间,但通过并行读取每个切片,这可以通过集群大小加快速度。然后对连接和连接进行哈希处理可能需要一点时间,但并行性也是你的朋友。分析表并选择适当的排序键也会有所帮助。
DELETE FROM t1 WHERE id IN(SELECT id FROM t2);
DELETE FROM t1 USING t2 WHERE t1.id = t2.ud;
DELETE FROM t1 WHERE EXISTS (SELECT 1 FROM t2 WHERE  t1.id = t2.id);