Sql隔离级别,读写锁定

时间:2013-05-26 14:16:46

标签: sql transactions isolation-level

有点蹩脚的问题,但我感到困惑...... 据我所知,隔离级别之间的区别在于他们如何管理锁(http://en.wikipedia.org/wiki/Isolation_(database_systems))。因此,正如文章中提到的那样,有Read,Write和Range锁,但没有定义它们本身。 你有什么可以做的,有什么不做的。当我用Google搜索时,没有任何具体的东西 相反,我对悲观锁定,乐观锁定,独家锁定,间隙锁定等新术语感到困惑。如果有人给我一个简短的概述并且可能给我一些很好的材料来启发自己,我会很高兴。

我开始研究隔离水平的最初问题是:

当我的事务隔离级别为READ_COMMITED时,当我将并发插入(Web应用程序的不同用户)放入一个表时会发生什么。整个桌子是否锁定? 或者一般情况下会发生什么:)?

提前致谢!

3 个答案:

答案 0 :(得分:1)

  

当我有并发插入时(web的不同用户)会发生什么   app)当我的事务隔离级别是一个表时   READ_COMMITED。

“Read committed”表示在提交事务之前,其他会话无法看到新插入的行。在没有显式事务的情况下运行的SQL语句包含在隐式事务中,因此“read committed”会影响所有插入。

某些数据库使用锁实现“read committed”。例如,可以在插入的行上放置读锁定,防止其他牵引力读取它。其他数据库(如Oracle)使用multiversion concurrency control。这意味着它们可以在插入之前表示数据库的一个版本。这允许他们在没有锁的情况下实现“read committed”。

答案 1 :(得分:0)

根据我的理解,隔离级别将决定如何以及何时获取和释放锁。 enter image description here

参考:http://aboutsqlserver.com/2011/04/28/locking-in-microsoft-sql-server-part-2-locks-and-transaction-isolation-levels/

答案 2 :(得分:-2)