聊聊数据库中的那些锁.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
聊聊数据库中的那些锁 原子性(Atomicity) 一个事务(transaction)中的全部操作,或者全部完成,或者全部不完成,不会结束在两头某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开头前的形态,就像这个事务从来没有执行过一样。即,事务不行分割、不行约简。 全都性(Consistency) 在事务开头之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的材料必需完全符合全部的预设约束、触发器、级联回滚等。 隔离性(Isolation) 数据库允很多个并发事务同时对其数据进行读写和修改的力量,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不全都。事务隔离分为不同级别,包括未提交读(Read uncommitted)、提交读(read committed)、可反复读(repeatable read)和串行化(Serializable)。 长久性(Durability) 事务处理结束后,对数据的修改就是永久的,即便系统毛病也不会丢失。 来源:维基百科?/wiki/ACID 事务 (Transaction:) 事务是进程中最小的堆栈,不能分成更小的部分。此外,某些事务处理组可以按挨次执行,但正如我们在原子性准绳中所解释的那样,即便其中一个事务失败,全部事务块也将失败。 锁定 (Lock) 锁定是一种确保数据全都性的机制。SQL Server在事务启动时锁定对象。事务完成后,SQL Server将释放锁定的对象。可以依据SQL Server进程类型和隔离级别更改此锁定模式。这些锁定模式是: 锁定层次结构 SQL Server具有锁定层次结构,用于猎取此层次结构中的锁定对象。数据库位于层次结构的顶部,行位于底部。下图说明白SQL Server的锁层次结构。 共享(S)锁 (Shared (S) Locks) 当需要读取对象时,会发生此锁定类型。这种锁定类型不会形成太大问题。 独占(X)锁定 (Exclusive (X) Locks) 发生此锁定类型时,会发生以防止其他事务修改或访问锁定对象。 更新(U)锁 (Update (U) Locks) 此锁类型与独占锁类似,但它有一些差异。我们可以将更新操作划分为不同的阶段:读取阶段和写入阶段。在读取阶段,SQL Server不期望其他事务有权访问此对象以进行更改,因而,SQL Server使用更新锁。 意图锁定 (Intent Locks) 当SQL Server想要在锁定层次结构中较低的某些资源上猎取共享(S)锁定或独占(X)锁定时,会发生意图锁定。实际上,当SQL Server猎取页面或行上的锁时,表中需要设置意图锁。 SQL Server locking 了解了这些背景学问后,我们尝试再SQL Server找到这些锁。SQL Server供应了很多动态管理视图来访问目标。要识别SQL Server锁,我们可以使用sys.dm_tran_locks视图。在此视图中,我们可以找到有关当前活动锁管理的大量信息。 在第一个示例中,我们将创建一个不包含任何索引的演示表,并尝试更新此演示表。 CREATE TABLE TestBlock (Id INT , Nm VARCHAR(100)) INSERT INTO TestBlock values(1,CodingSight) In this step, we will create an open transaction and analyze the locked resources. BEGIN TRAN UPDATE TestBlock SET Nm=NewValue_CodingSight where Id=1 select @@SPID 再猎取到了SPID后,我们来看看sys.dm_tran_lock视图里有什么。 select * from sys.dm_tran_locks WHERE request_session_id=74 此视图前往有关活动锁资源的大量信息,但是是一些我们难以理解的一些数据。因而,我们必需将sys.dm_tran_locks?join 一些其他表。 SELECT dm_tran_locks.request_session_id, dm_tran_locks.resource_database_id, DB_NAME(dm_tran_locks.resource_database_id) AS dbname, CASE WHEN resource_type = OBJECT THEN OBJECT_NAME(dm_tran_locks.resource_associat

文档评论(0)

duanbingbing + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档