Redshift Drop Table Stuck

时间:2016-04-13 13:08:09

标签: amazon-redshift

我有一个cronjob,它每晚都会启动,包括构建一个临时表,将当前表放在Redshift上,然后在旧表中交换临时表。超过一半的时间,这个特定的工作在删除现有的表时就会卡住,并且表现得好像有一些待处理的事务正在阻止掉线。

这只是使用完全相同的脚本在一夜之间运行的数十个作业中的一个,其中没有一个曾经遇到过这个问题;但是,有一些细微差别:

  • 此特定作业运行的框与所有其他生产作业不同,因为此作业目前处于测试状态。
  • 此框中使用的S3密钥与其他框不同。

除了我从未在任何其他工作中看到过这个问题之外,由于以下原因,此问题非常难以排除故障:

  • 我无法通过在当前正在运行的同一个盒子上手动运行脚本来复制此问题;脚本按预期执行,表丢弃仅在几秒钟内完成。我能想到的唯一区别是我将脚本作为ubuntu执行,而cronjob则从root执行。
  • 我没有成功识别或终止导致drop停止的会话;我在Stack Overflow(这是最适用的答案问题 - redshift drop or truncate table very very slow),Redshift文档以及其他方面看起来很高低,但我找不到任何答案。当我看到作业停滞不前时,我已经检查过Redshift上的以下表格,并且通常会发现事情处于以下状态:
    • 已创建临时表,但目标表的旧版本仍然存在。
    • stv_locks表显示有三个进程在运行,lock_status为"保持写锁定," "持有删除锁,"和"持插入锁定"分别。与这些相关联的进程ID不是与当前作业相关的ID。
    • stv_tr_conflict表没有显示任何内容。
    • stv_recents表格显示状态为drop的{​​{1}}。
    • 上面描述的创建锁定的查询在Running中显示为已完成,因此似乎与svl_qlog表格相矛盾。
    • 在查询stv_locks时,使用pg_terminate_backend来停止关联的进程实际上不会删除会话,但是可以释放允许作业完成的内容。

任何有关弄清楚究竟发生了什么的帮助都将非常感谢!

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,我只是反击RS然后再正常工作。