我有一个cronjob,它每晚都会启动,包括构建一个临时表,将当前表放在Redshift上,然后在旧表中交换临时表。超过一半的时间,这个特定的工作在删除现有的表时就会卡住,并且表现得好像有一些待处理的事务正在阻止掉线。
这只是使用完全相同的脚本在一夜之间运行的数十个作业中的一个,其中没有一个曾经遇到过这个问题;但是,有一些细微差别:
除了我从未在任何其他工作中看到过这个问题之外,由于以下原因,此问题非常难以排除故障:
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
来停止关联的进程实际上不会删除会话,但是可以释放允许作业完成的内容。任何有关弄清楚究竟发生了什么的帮助都将非常感谢!
答案 0 :(得分:0)
我遇到了同样的问题,我只是反击RS然后再正常工作。