【问题标题】:Sql isolation levels, Read and Write locksSql 隔离级别、读写锁
【发布时间】:2013-05-26 14:16:45
【问题描述】:

有点蹩脚的问题,但我很困惑...... 据我了解,隔离级别之间的区别在于它们如何管理锁(http://en.wikipedia.org/wiki/Isolation_(database_systems))。所以正如文章中提到的,有读、写和范围锁,但没有定义它们本身是什么。 你可以做什么,不可以做什么。当我用谷歌搜索它时,没有什么具体的 相反,我对悲观锁、乐观锁、排他锁、间隙锁等新术语感到困惑。如果有人给我一个简短的概述,我会很高兴,也许会给我一些很好的材料来启发自己。

我开始研究隔离级别的最初问题是:

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

提前致谢!

【问题讨论】:

  • 只是为了完整:您是否要求特定的 RDBMS?
  • 不,我希望它是通用概念...不涉及具体的 RDBMS。

标签: sql transactions isolation-level


【解决方案1】:

当我有并发插入时会发生什么(不同的网络用户 当我的事务隔离级别为时,应用程序)到一张表中 READ_COMMITED。

“读取已提交”意味着其他会话在提交其事务之前无法看到新插入的行。没有显式事务运行的 SQL 语句被包装在隐式事务中,因此“已提交读”会影响所有插入。

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

【讨论】:

  • 您能否详细介绍不同的锁类型 - 读、写和范围?
【解决方案2】:

据我了解,隔离级别将决定如何以及何时获取和释放锁。

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

【讨论】:

    【解决方案3】:

    【讨论】:

    • 你确定这回答了你的问题吗?这似乎无关紧要。
    猜你喜欢
    • 2021-05-23
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多