mssql sqlserver sql脚本编写中各种锁相关知识简介


摘要:
下文将讲述sqlserver中各种锁的相关知识,如下所示:


sql server中隐式的锁是由sqlserver引擎自动控制的,但我们也可以通过with关键字后指定相关的锁类型,如下所示:


with后的相关锁简介



1.holdlock锁

holdlock为共享锁,指将锁保存到事务完成后立即释放锁信息。


2.nolock

显式指定不采用任何锁,此选项常常应用于查询中,但此操作可能会读取一些未提交事务的数据,可能会发生脏读。


3.paglock

页锁,对数据所在页进行锁定


4.READPAST

读取数据时,跳过其它事务锁定行,readpast只可和select关键字一起应用。


5.READUNCOMMITTED

需同select一起查询数据时使用,效果类似nolock


6.REPEATABLEREAD

———–用与运行在可重复读隔离级别的事务相同的锁语义执行扫描。


7.ROWLOCK

sql server 行锁,对数据表中的行数据指定锁定操作


8.SERIALIZABLE

可同时读取事务,类似于holdlock.


9.TABLOCK

表锁,用于表锁定操作


10.TABLOCKX

排它锁,用于防止其它事务读取和更新相关表,在事务结束前,此锁会一直保持。


11.UPDLOCK

读取数据时,使用的更新锁,事务结束后,此锁会自动释放。


12.XLOCK

排它锁,需结合pageLock 或 tablock 指定排它锁的粒度