多线程多进程数据库访问应注意问题:
事务在执行时不知道其他事务的存在,无论是多Connection或是单
Connection。
1、Select 语句不需要显示的用 BeginTrans 声明事务。如果显示的进
行了声明则会给数据库加入共享锁,接下来如果是Update语句,在多线
程,多进程中数据库很可能会产生死锁现象。
2、显示声明的事务时,事务内的处理应尽量少,只将必须的操作放入事
务中,尽量不要嵌套事务或在事务中进行Select查询。加锁时间越短数
据库的并发性越高。
3、单独的Update语句是一个隐示的事务,不需要显示的声明事务。(与
数据库的设置有关,SQL默认为隐示事务自动提交)
4、事务中如果需要先进行Select操作再进行Update操作时,尽量给
Select加入参数,在Select操作时将数据库的行或页或表锁定。
5、事务中尽量保持锁表语句顺序进行保持一致。如果发生锁升级时互锁
,后面的事务会成为牺牲品。