Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server锁说明_Sql Server_Locking - Fatal编程技术网

Sql server SQL Server锁说明

Sql server SQL Server锁说明,sql-server,locking,Sql Server,Locking,下面是SQL Server 2000打算支持的锁的列表。对于“意图”锁的实际含义,我有点困惑。我在网上四处搜索,答案似乎有点神秘 为了进一步回答我的具体问题,我希望将这个问题作为一个Wiki,了解每个锁的含义以及在什么情况下会获得这种类型的锁 共用 更新(U) 独家(X) 意图 共享意图(IS) 专用意向(九) 意向共享(六个) 意向更新(IU) 更新意图独占(UIX) 共享意图更新(SIU) 模式 模式修改(Sch-M) 模式稳定性(Sch-S) 批量更新(BU) 关键范围 共享

下面是SQL Server 2000打算支持的锁的列表。对于“意图”锁的实际含义,我有点困惑。我在网上四处搜索,答案似乎有点神秘

为了进一步回答我的具体问题,我希望将这个问题作为一个Wiki,了解每个锁的含义以及在什么情况下会获得这种类型的锁

  • 共用
    • 更新(U)
    • 独家(X)
    • 意图
      • 共享意图(IS)
      • 专用意向(九)
      • 意向共享(六个)
      • 意向更新(IU)
      • 更新意图独占(UIX)
      • 共享意图更新(SIU)
    • 模式
      • 模式修改(Sch-M)
      • 模式稳定性(Sch-S)
    • 批量更新(BU)
    • 关键范围
      • 共享密钥范围和共享资源锁(范围)
      • 共享密钥范围和更新资源锁(范围)
      • 插入密钥范围和空资源锁(范围i\u N)
      • 独占密钥范围和独占资源锁(RangeX_X)
      • 转换锁(RangeI_S、RangeI_、RangeI_X、RangeX_S、RangeX_)

意向锁放置在表级别,表示事务将在表中的某些行上放置适当的锁

这加快了对需要在表级别设置锁的事务的冲突检查。例如,需要表上的独占锁的事务可以在表级别检测冲突(“意图共享”锁将在那里),而不必检查所有行(或页)的共享锁。

有一个合理的解释:

意向锁表示SQL Server希望在层次结构中较低的某些资源上获取共享(S)锁或独占(X)锁。例如,在表级别放置的共享意图锁意味着事务打算在该表中的页或行上放置共享意图锁。在表级别设置意图锁可防止另一个事务随后在包含该页的表上获取独占(X)锁。意向锁提高了性能,因为SQL Server只在表级别检查意向锁,以确定事务是否可以安全地获取该表上的锁。这样就不需要检查表上的每一行或每一页锁,以确定事务是否可以锁定整个表


意向锁的另一个重要特性是,您不会显式地从代码中放置它们,而是在放置非意向锁时隐式地请求它们。

这类问题不应该是社区所有的吗?我的意思是,因为这看起来有很多工作要回答。但这只是一个建议。同意塞尔吉奥的意见,不过如果有足够的代表heeavy会员编辑它,它将成为一个社区帖子。如果OP以社区为基础,更多的人将能够做出贡献。