写入后读取数据时需要使用事务处理吗?

时间:2019-06-10 10:58:15

标签: node.js database postgresql transactions

我有一个Node.js Web应用程序,其路由将某些实体标记为已删除-翻转数据库中的布尔值字段。此路由返回该实体。现在,我的代码看起来像这样:

UPDATE entity SET is_deleted=true WHERE entity.id = ?
SELECT * FROM entity WHERE entity.id = ?

目前由于其他原因,我无法使用RETURNING语句。 因此,我与同事争论,我认为将UPDATE和SELECT都放入事务中是不必要的,因为我们对数据没有做任何重要的事情,只是将其返回。作为该应用的用户,我希望返回的数据尽可能新鲜,这意味着我在刷新页面时会得到相同的结果。

我的问题是,写后读取数据的最佳实践是什么?您是否总是在交易内部写书来包装阅读?还是取决于?

1 个答案:

答案 0 :(得分:0)

好吧,出于性能方面的考虑,您希望保持交易尽可能的小和快速。这将最大程度地减少可能导致应用程序崩溃的潜在锁定和死锁。因此,除非有很好的理由,否则将选择语句放在事务之外。如果您需要执行长时间运行的select语句,这尤其重要。通过将选择放入事务中,可以使更新锁定的时间比需要的时间长得多。