• Sp_Lock


    SP_LOCK

    其显示信息为:

    Spid:进程ID号(要发现哪些用户和该spid相连,你就要执行存储过程sp_who)

    Dbid:数据库ID号(可以在主数据库中的sysdatabases表格中找到它)

    Objid:对象ID号(要查看这个对象,你可以在主数据库中的sysobjects表格中查询指定的objid)

    Indid:索引ID号

    Type:缩写的对象类型(DB:数据库、TAB:表、PG:页、EXT:簇、RID:行标等)

    Resource:锁资源

    Mode:锁模式(S:共享锁、U:修改锁、X:排它锁、IS共享意图锁、IX排它意图锁)

    Status:当前该锁的状态(GRANT获得状态、WAIT被其它进程阻塞、CVNT当前锁正在转化)。

    当你发现一个spid 获得了大量的数据库锁定时,这将有助于确定什么存储过程或语句正在运行。为了达到这个目的,运行以下 DBCC 命令: 
    DBCC INPUTBUFFER(spid) 
    这个DBCC命令将返回正在EventInfo字段中运行的语句的相关信息。

    类型列  
      "类型"列显示当前锁定的资源类型。  
      资源类型   描述    
      RID   用于锁定表中的一行的行标识符。    
      KEY   索引中的行锁。用于保护可串行事务中的键范围。    
      PAG   数据或索引页。    
      EXT   相邻的八个数据页或索引页构成的一组。    
      TAB   包括所有数据和索引在内的整个表。    
      DB   数据库。    
      资源列  
      "资源"列提供有关正被锁定资源的信息。  
      资源类型   描述    
      RID   表内已锁定行的行标识符。行由   fileid:page:rid   组合进行标识,其中,rid   是页中的行标识符。    
      KEY   SQL   Server   内部使用的十六进制数字。    
      PAG   页码。页由   fileid:page   组合进行标识,其中,fileid   是   sysfiles   表中的   fileid,而   page   是该文件内的逻辑页码。    
      EXT   正被锁定的扩展盘区中的第一个页码。页由   fileid:page   组合进行标识。    
      TAB   由于   ObjId   列已包含表的对象   ID,所以没有提供任何信息。    
      DB   由于   dbid   列已包含数据库的数据库   ID,所以没有提供任何信息。    
      在sp_lock的结果集内,锁定的RID资源类型中的资源描述为1:1225:2。这表明在fileid1内、页码为1225的页中、行标识符为2的行上应用了锁。有关更多信息,请参见有关死锁的疑难解答。  
      模式列  
      "模式"列描述正应用于资源的锁类型。锁类型包括任何多粒锁。  
      状态列  
      "状态"列显示锁是已经获取(GRANT)、正在另一个进程中被阻塞(WAIT)、还是正在转换为另一个锁(CNVT)。正转换为另一种锁的锁会保持在一种模式中,但等待获取更强的锁模式(例如,从更新模式变为排它模式)。当遇到诊断阻塞问题时,会认为CNVT与WAIT类似。  
      监视锁定活动的其它工具  
      当持有和释放锁的速度比sp_lock显示的速度快时,使用sp_lock来显示锁定信息并不一定始终可行。在这种情况下,可以使用SQL事件探查器监视和记录锁定信息。此外,可以使用Windows性能监视器监视使用SQL Server锁对象计数器的锁活动。

    (1)共享   (S)   用于不更改或不更新数据的操作(只读操作),如   SELECT   语句。    
    (2)更新   (U)   用于可更新的资源中。防止当多个会话在读取、锁定以及随后可能进行的资源更新时发生常见形式的死锁。     
    (3)排它   (X)   用于数据修改操作,例如   INSERT、UPDATE   或   DELETE。确保不会同时对同一资源进行多重更新。    
    (4)意向   用于建立锁的层次结构。意向锁的类型为:意向共享   (IS)、意向排它   (IX)   以及与意向排它共享   (SIX)。    
    (5)架构   在执行依赖于表架构的操作时使用。架构锁的类型为:架构修改   (Sch-M)   和架构稳定性   (Sch-S)。    
    (6)大容量更新   (BU)   向表中大容量复制数据并指定了   TABLOCK   提示时使用。

     

  • 相关阅读:
    【原创】大叔问题定位分享(21)spark执行insert overwrite非常慢,比hive还要慢
    【原创】大叔经验分享(14)spark on yarn提交任务到集群后spark-submit进程一直等待
    【原创】大叔问题定位分享(20)hdfs文件create写入正常,append写入报错
    【原创】大叔问题定位分享(19)spark task在executors上分布不均
    【原创】大数据基础之Spark(4)RDD原理及代码解析
    【原创】大叔问题定位分享(18)beeline连接spark thrift有时会卡住
    【原创】大叔问题定位分享(17)spark查orc格式数据偶尔报错NullPointerException
    【原创】大叔经验分享(13)spark运行报错WARN Utils: Service 'sparkDriver' could not bind on port 0. Attempting port 1.
    linux定时任务
    source导入错码解决办法
  • 原文地址:https://www.cnblogs.com/kingwwz/p/5912497.html
Copyright © 2020-2023  润新知