上一页 1 ··· 56 57 58 59 60 61 62 63 64 ··· 102 下一页
摘要: 对象①锁:每条SQL语句②隔离:事务锁①并发问题丢失更新未确认的读取(脏读)不一致的分析(非重复读):多次读取相同的数据(行)不一致(其他用户更改update)幻像读:多次读取有不存在和新增的数据(其他用户插入insert或删除delete)隔离级别隔离级别脏读不可重复读取幻像说明未提交读(readuncommitted)是是是如果其他事务更新,不管是否提交,立即执行提交读(readcommitted默认)否是是读取提交过的数据。如果其他事务更新没提交,则等待可重复读(repeatableread)否否是查询期间,不允许其他事务update可串行读(serializable)否否否查询期间,不 阅读全文
posted @ 2012-01-04 17:03 qanholas 阅读(3401) 评论(0) 推荐(2)
摘要: 存储过程:SET Transaction Isolation Level Read语法的四种情况这几天一直在弄存储过程,现在在这里跟大伙共享下资料:SET Transaction Isolation Level Read UNCOMMITTED使用这句东东呢可以分为四种情况,现在就在这里逐一介绍:第一种情况:READ COMMITTED这句的作用是:指定在读取数据时控制共享锁以避免脏读,但数据可在事务结束前更改,从而产生不可重复读取或幻像数据。该选项是 SQL Server 的默认值。第二种情况:READ UNCOMMITTED 这句的作用是:执行脏读或0级隔离锁定,这表示不发出共享... 阅读全文
posted @ 2012-01-04 16:10 qanholas 阅读(39380) 评论(0) 推荐(8)
摘要: 数据库是要被广大客户所共享访问的,那么在数据库操作过程中很可能出现以下几种不确定情况。更新丢失(Lost update) 两个事务都同时更新一行数据,但是第二个事务却中途失败退出,导致对数据的两个修改都失效了。这是因为系统没有执行任何的锁操作,因此并发事务并没有被隔离开来。脏读(Dirty Reads) 一个事务开始读取了某行数据,但是另外一个事务已经更新了此数据但没有能够及时提交。这是相当危险的,因为很可能所有的操作都被回滚。不可重复读(Non-repeatable Reads) 一个事务对同一行数据重复读取两次,但是却得到了不同的结果。它包括以下情况: (1) 事务T1读取某一数据... 阅读全文
posted @ 2012-01-02 15:24 qanholas 阅读(26714) 评论(0) 推荐(5)
摘要: 锁的概述一.为什么要引入锁多个用户同时对数据库的并发操作时会带来以下数据不一致的问题:丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统脏读A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致不可重复读A用户读取数据,随后B用户读出该数据并修改,此时A用户再读取数据时发现前后两次的值不一致并发控制的主要方法是封锁,锁就是在一段时间内禁止用户做某些操作以避免产生数据不一致二锁的分类锁的类别有两种分法:1.从数据库系统的角度来看:分为独占锁(即排它锁),共享 阅读全文
posted @ 2011-12-30 11:55 qanholas 阅读(602) 评论(0) 推荐(0)
摘要: 无论是有意无意,如果事务在数据库中保持打开,则它会阻塞其他进程对修改后的数据进行操作。同样,对事务日志进行备份也只会截断不活动事务的那部分事务日志,所以打开的事务会导致日志变多(甚至达到物理限制),直到事务被提交或回滚。要找到最早的活动事务,可以使用DBCCOPENTRAN命令。详细用法见MSDN:http://msdn.microsoft.com/zh-cn/library/ms182792.aspx给出一个示例:CREATETABLET_Product(PKIDint,PNameNvarchar(50));GOBEGINTRANINSERTINTOT_ProductVALUES(101,& 阅读全文
posted @ 2011-12-29 17:02 qanholas 阅读(573) 评论(0) 推荐(0)
上一页 1 ··· 56 57 58 59 60 61 62 63 64 ··· 102 下一页