我在Redshift集群上并行运行了几个批处理ETL操作.
我的管道执行以下操作:
在临时临时表上做一堆东西.最后,通过执行以下操作,进入最终表(永久和跨进程共享):
BEGIN;
LOCK table X;
DELETE FROM X USING stage_table...
INSERT INTO X ...
END;
Run Code Online (Sandbox Code Playgroud)
但是,当我有几个并行的进程时,有些失败了:
错误:1023详细信息:表上的可序列化隔离违规 - 142443,事务>形成周期是:388224,388226(pid:32012)
(142443是我的桌子X)
当我一个接一个地运行这个过程时,一切都像魅力一样.我在其他进程上成功使用了锁(并验证它是按预期工作的)所以我很困惑.任何帮助赞赏!