编写有效事务的指导原则

  • 不要在事务处理期间要求用户输入。
    在事务启动之前,获得所有需要的用户输入。如果在事务处理期间还需要其他用户输入,则回滚当前事务,并在提供了用户输入之后重新启动该事务。即使用户立即响应,作为人,其反应时间也要比计算机慢得多。事务占用的所有资源都要保留相当长的时间,这有可能会造成阻塞问题。如果用户没有响应,事务仍然会保持活动状态,从而锁定关键资源直到用户响应为止,但是用户可能会几分钟甚至几个小时都不响应。
  • 在浏览数据时,尽量不要打开事务。
    在所有预备的数据分析完成之前,不应启动事务。
  • 尽可能使事务保持简短。
    在知道要进行的修改之后,启动事务,执行修改语句,然后立即提交或回滚。只有在需要时才打开事务。
  • 若要减少阻塞,请考虑针对只读查询使用基于行版本控制的隔离级别。有关详细信息,请参阅 使用基于行版本控制的隔离级别
  • 灵活地使用更低的事务隔离级别。
    可以很容易地编写出许多使用只读事务隔离级别的应用程序。并不是所有事务都要求可序列化的事务隔离级别。
  • 灵活地使用更低的游标并发选项,例如开放式并发选项。
    在并发更新的可能性很小的系统中,处理“别人在您读取数据后更改了数据”的偶然错误的开销要比在读取数据时始终锁定行的开销小得多。
  • 在事务中尽量使访问的数据量最小。
    这样可以减少锁定的行数,从而减少事务之间的争夺。

posted on 2011-07-30 22:22  jshchg  阅读(346)  评论(0)    收藏  举报

导航