多线程多进程数据库访问应注意问题
2007-12-10 14:58
274 查看
多线程多进程数据库访问应注意问题:
事务在执行时不知道其他事务的存在,无论是多Connection或是单
Connection。
1、Select 语句不需要显示的用 BeginTrans 声明事务。如果显示的进
行了声明则会给数据库加入共享锁,接下来如果是Update语句,在多线
程,多进程中数据库很可能会产生死锁现象。
2、显示声明的事务时,事务内的处理应尽量少,只将必须的操作放入事
务中,尽量不要嵌套事务或在事务中进行Select查询。加锁时间越短数
据库的并发性越高。
3、单独的Update语句是一个隐示的事务,不需要显示的声明事务。(与
数据库的设置有关,SQL默认为隐示事务自动提交)
4、事务中如果需要先进行Select操作再进行Update操作时,尽量给
Select加入参数,在Select操作时将数据库的行或页或表锁定。
5、事务中尽量保持锁表语句顺序进行保持一致。如果发生锁升级时互锁
,后面的事务会成为牺牲品。
事务在执行时不知道其他事务的存在,无论是多Connection或是单
Connection。
1、Select 语句不需要显示的用 BeginTrans 声明事务。如果显示的进
行了声明则会给数据库加入共享锁,接下来如果是Update语句,在多线
程,多进程中数据库很可能会产生死锁现象。
2、显示声明的事务时,事务内的处理应尽量少,只将必须的操作放入事
务中,尽量不要嵌套事务或在事务中进行Select查询。加锁时间越短数
据库的并发性越高。
3、单独的Update语句是一个隐示的事务,不需要显示的声明事务。(与
数据库的设置有关,SQL默认为隐示事务自动提交)
4、事务中如果需要先进行Select操作再进行Update操作时,尽量给
Select加入参数,在Select操作时将数据库的行或页或表锁定。
5、事务中尽量保持锁表语句顺序进行保持一致。如果发生锁升级时互锁
,后面的事务会成为牺牲品。
相关文章推荐
- 使用Visual Basic访问数据库几个注意的问题
- qt 多线程访问数据库问题
- Qt 多线程与数据库操作需要注意的几点问题
- Qt 多线程与数据库操作需要注意的几点问题
- 多进程访问数据库SQLite问题
- 通过Sql 2005 management Studio 访问WSS3的默认数据库引擎:MICROSOFT##SSEE,注意问题
- c#数据库访问返回值类型为SqlDataReader时使用using时注意的问题
- Qt 多线程与数据库操作需要注意的几点问题
- 开发随笔-处理.net 多线程访问数据库问题
- Qt 多线程与数据库操作需要注意的几点问题
- Qt 多线程与数据库操作需要注意的几点问题
- 使用Visual Basic访问数据库几个注意的问题
- 使用Visual Basic访问数据库几个注意的问题
- FMDB多线程访问数据库,database is locked的问题
- 多线程访问数据库的问题
- 通过Sql 2005 management Studio 访问WSS3的默认数据库引擎:MICROSOFT##SSEE,注意问题
- SQLiteDatabase 多线程访问需要注意的问题
- Qt 多线程与数据库操作需要注意的几点问题
- 使用Spring4.3解决缓存过期后多线程并发访问数据库的问题
- Qt 多线程与数据库操作需要注意的几点问题(QSqlDatabase对象只能在当前线程里使用)