如何决定使用数据库事务

pea*_*kit 8 database transactions

你们怎么决定你应该在事务中包装sql?

请详细说明一下.

干杯!!

Jef*_*ver 12

当您需要完全处理一组更改以考虑操作完成且有效时,应使用事务.换句话说,如果只有一部分成功执行,那么是否会导致数据库中存储不完整或无效的数据?

例如,如果您有一个插入后跟一个更新,如果插入成功并且更新失败会发生什么?如果这会导致数据不完整(在本例中为孤立记录),则应将两个语句包装在事务中以使它们作为"集合"完成.

  • "当需要处理一组需要处理时使用"我认为第二个"需求"是不必要的. (2认同)

Pau*_*ier 8

如果您正在执行两个或多个您希望在功能上是原子的语句,则应将它们包装在事务中.


KM.*_*KM. 6

如果您要执行多个数据修改语句来完成任务,则所有操作都应在事务中.

这样,如果第一个成功,但是以下任何一个都有错误,您可以回滚(撤消)所有内容,就好像什么都没做过一样.


Cad*_*oux 6

每当你不喜欢它时,如果部分操作可以完成而部分操作不能完成.


Geo*_*ker 6

每当您想要锁定数据库并可能使生产应用程序崩溃时,每当您想让应用程序充满隐藏的可扩展性噩梦时,请继续创建事务。让它变大,变慢,并在里面放一个循环。

说实话,上述答案都没有承认大量使用交易带来的权衡和潜在问题。要小心,每次都要考虑风险/回报。

eBay 根本不使用它们。我确信还有很多其他人。

http://www.infoq.com/interviews/dan-pritchett-ebay-architecture