是否可以安全地编写处理大量数据的作业?

时间:2016-10-24 09:51:58

标签: ruby postgresql sequel que

我正在使用QueSequel gem,我感兴趣的是编写需要处理大量数据的作业是否安全,数据是否比安全放置的数据多得多数据库事务,例如定期导入/导出80k +行(我目前处理1k记录事务批处理中的记录)。

我关注的是,如果gem / postgres在后台工作程序执行期间进行某种隐式事务,这可能会使回滚段失控并使DB崩溃在一个swappy hell中。

我之所以这样问,是来自文档的这一行:

  

安全 - 如果Ruby流程死亡,它工作的工作不会丢失,或者处于锁定或模糊状态 - 它们会立即被任何其他工作人员接收。

和我一起这个尖叫"嵌套在一个事务"中,如果我的恐惧是真的,可能会导致我的80k记录无声地包装到同一个回滚段。我可以在我的笔记本电脑上试一下,但是我的笔记本电脑比生产虚拟机强得多,所以我担心它可能会成功地破坏我的开发环境,然后在部署中光荣地崩溃。

有类似Que经验的人可以帮忙吗?

链接:the same question on GH

1 个答案:

答案 0 :(得分:0)

Que devs回答:

  

每个作业周围没有隐式事务 - 通过使用咨询锁锁定作业ID来提供保证。如果客户端连接丢失,Postgres会负责为我们释放咨询锁,无论事务状态如何。