Posts Tagged ‘mssql2005

一. 概述… 1
二. 并发访问的不利影响… 1
1. 脏读(dirty read)… 1
2. 不可重复读(nonrepeatable read)… 1
3. 幻读(phantom read)… 1
三. 并发访问的控制机制… 2
1. 锁… 2
2. 行版本控制… 2
四. 隔离级别… 2
五. 事务… 3
1. 事务的模式… 3
1.1. 显式事务(Explicit Transactions)… 3
1.2. 自动提交事务(Autocommit Transactions)… 4
1.3. 隐式事务(Implicit Transactions)… 4
2. 事务的编程… 5
2.1. Transact-SQL脚本… 5
2.2. ADO.NET应用程序接口… 5
一. 概述
当多个用户同时访问数据库的同一资源时,叫做并发访问。如果并发的访问中有用户对数据进行修改,很可能就会对其他访问同一资源的用户产生不利的影响。可能产生的并发不利影响有以下几类:脏读、不可重复读和幻读。
为了避免并发访问产生的不利影响,sql server设计有两种并发访问的控制机制:锁、行版本控制。
二. 并发访问的不利影响
并发访问,如果没有并发访问控制机制,可能产生的不利影响有以下几种
1. 脏读(dirty read)
如果一个用户在更新一条记录,这时第二个用户来读取这条更新了的记录,但是第一个用户在更新了记录后又反悔了,不修改了,回滚了刚才的 更新。这样,导致了第二个用户实际上读取到了一条根本就没有存在过的修改后的记录。如果第一个用户在修改记录期间,把所修改的记录锁住,在修改完成前别的 用户读取不到记录,就能避免这种情况。
2. 不可重复读(nonrepeatable read)
第一个用户在一次事务中读取同一记录两次,第一次读取一条记录后,又有第二个用户来访问这条记录,并修改了这条记录,第一个用户第二次 读取这条记录时,得到的是跟第一次不同的数据了。如果第一个用户在两次读取之间锁住要读取的记录,别的用户不能去修改相应的记录就能避免这种情况。
3. 幻读(phantom read)
第一个用户在一次事务中两次读取同样满足条件的一批记录,第一次读取一批记录后,又有第二个用户来访问这个表,并在这个表中插入或者删 除了一些记录,第一个用户第二次以同样条件读取这批记录时,可能得到的结果有些记录是在第一次读取时有,第二次的结果中没有了,或者是第二次读取的结果中 有的记录在第一次读取的结果中没有的。如果第一个用户在两次读取之间锁住要读取的记录,别的用户不能去修改相应的记录,也不能增删记录,就能避免这种情 [...]


关于博主

姓名:郑玏

性别:男

职业:IT工程师

爱好:KTV、乒乓球、台球、五子棋、围棋、编程

语言:中文、英语、闽南语

Email: