【问题标题】:Does AWS Kinesis Firehose stream overrides a LOCK on tableAWS Kinesis Firehose 流是否会覆盖表上的 LOCK
【发布时间】:2021-10-07 13:59:47
【问题描述】:

我像这样在我的 redshift 表上开始了一个事务

BEGIN
LOCK <My-table-name>

然后就这样离开了。 然后我将一些输入泵入我的 Kinesis Firehose 流,该流被配置为将其放到同一个表中。

在观察 Kinesis 日志时,我注意到正好 30 分钟后 Kinesis 将数据发布到我的 redshift 表中,即使有一个打开的事务并且表已锁定。

我只是想要一些信息,如果它是 Kinesis Firehose 破坏表 LOCK 的默认行为,或者我在锁定表时可能会遗漏一些东西。

我只想在表被锁定时测试 Kinesis firehose 的行为,它是每次都打破锁失败还是无限等待或超时。

【问题讨论】:

  • 我会怀疑持有锁的会话以某种方式终止。您为 Firehose 配置的更新速率是 30 分钟吗?您是否在在不同的会话中查询SVV_TRANSACTIONS 以验证您的交易在 30 分钟后仍然有效?你在STL_TR_CONFLICT 中看到锁冲突了吗?

标签: sql amazon-web-services amazon-redshift amazon-kinesis


【解决方案1】:

我怀疑您的工作台可能处于“自动提交”模式,并且在每个运行代码块的末尾发送了一个 COMMIT。这将结束您的事务并释放锁定。您能否通过从另一个会话中查看来确认您的锁仍然存在?

还有其他释放锁的方式,例如解决冲突,但如果是这种情况,您会在工作台上看到一条错误消息。在您的 firehose 执行期间查看哪些锁已到位将是检测正在发生的事情的直接方法。

【讨论】:

  • 锁定表后,我从另一个控制台验证了更新由于锁定而处于无限等待状态。
  • 我明白了。锁会阻塞,但只有 30 分钟,这是正确的吗?某些事情可能会结束会话。如果您在 30 分钟后再次查看,您不会看到您的手动锁,对吗?我会查看集群的会话超时设置。您的工作台也可能有超时,空闲连接也可能被网络设备关闭。我猜您使锁定的会话也没有响应(关闭连接)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 2021-02-17
  • 2016-08-20
  • 2020-11-03
  • 2019-11-24
  • 2019-09-29
  • 2019-08-20
相关资源
最近更新 更多