你依赖数据库交易多少钱?
您更喜欢小型还是大型交易范围?
您更喜欢客户端事务处理(例如.NET中的TransactionScope)而不是服务器端事务,反之亦然?
嵌套交易怎么样?
您有与交易相关的一些提示和技巧吗?
你遇到过与交易有关的任何陷阱吗?
欢迎各种答案.
我总是在一个using语句中包装一个事务.
using(IDbTransaction transaction ) { // logic goes here. transaction.Commit(); }
一旦交易超出范围,它就会被处置掉.如果事务仍处于活动状态,则会回滚该事务.此行为失败 - 保护您不会意外地锁定数据库.即使抛出未处理的异常,事务仍将回滚.
在我的代码中,我实际上省略了显式回滚,并依赖using语句为我做的工作.我只是显式执行提交.
我发现这种模式大大减少了记录锁定问题.
就个人而言,开发一个基于高流量性能的网站,我尽可能远离数据库事务.显然它们是必要的,所以我使用ORM和页面级对象变量来最小化我必须进行的服务器端调用的次数.
嵌套事务是最小化调用的一种很棒的方法,只要它们是不会导致锁定的快速查询,我就可以随时指导这个方向.在这些情况下,NHibernate一直是救世主.