什么时候在Web应用程序中使用必要的事务?

时间:2015-07-08 06:31:54

标签: sql database web transactions

我想知道,如果Web请求处理程序需要执行需要成为原子组的多个更新查询,就像在Django应用程序中一样:

modelA.fieldX = True
modelA.save()   # produce a update query on modelA table
modelB.fieldY = modelB.fieldY + 1
modelB.save()   # produce a update query on modelB table

在查询之间没有采用逻辑分支或抛出异常,我还需要在事务中包装查询吗?

在交易中包装它们的缺点是什么?它如何影响相关表上其他查询的性能?

编辑: 目前,我只使用交易进行与金钱相关的查询,只是为了安全起见。

1 个答案:

答案 0 :(得分:1)

通常,事务是数据一致性所必需的。例如,当您将资金从帐户A转帐到帐户B时,您应该更新交易中帐户A和B中的金额,以避免在减少帐户A金额但帐户B的金额未因此增加而增加的情况例外或其他原因。

长事务对关系数据库不利,因为它增加了数据库资源的锁定并增加了它的开销成本

我建议尽可能使用短交易来确保数据的一致性。