【发布时间】:2021-02-08 00:02:15
【问题描述】:
最近我们看到大量与 Serializable isolation violation on table 相关的错误,我们有一些基表构成我们的核心数据,我们从这些表中提取值以在 Lambda 中运行我们的业务逻辑。
场景:
- Lambda 1:每 15 分钟运行一次,并将最新数据从源 (RDBMS) 获取到 Redshift,从而形成我们的基表(
DELETE和INSERT) - Lambda 2 : 成功运行上述 Lambda 后触发,这是编写业务逻辑的地方,是正常的
SELECT语句 - Lambda 3:每 15 分钟触发一次,也使用基表运行,并且只有
SELECT语句
当在实例中触发 Lambda 1 以进行下一次运行时,我们看到它失败并出现 Serializable isolation violation 错误。
根据大多数帖子,在表上放置 LOCK 可能会解决问题,但会增加其他查询运行的等待时间比预期的更长,并且由于 Lambda 的约束,它会在 15 分钟后超时,即不理想。而且我确实看到帖子说放置一个 LOCK 并不能完全解决它,所以对使用它持怀疑态度。
所以让我印象深刻的是在基表顶部创建一个VIEW 并在所有 SELECT 语句中使用该视图会有所帮助,如果有人对此有任何见解真的会有所帮助。
【问题讨论】:
标签: sql amazon-web-services amazon-redshift