标签归档:锁表

mssql sqlserver 表锁定的五种方法分享


摘要:
下文讲述sqlserver中表锁定的五种方法分享,如下所示:
实验环境: sql server 2008 R2



方法1: TABLOCKX

SELECT * FROM tableName WITH (TABLOCKX)

此锁定方法,可限制其它会话无法查询、更新此表,知道此会话结束


方法2: XLOCK

SELECT * FROM tableName WITH (XLOCK)

此锁定方法,可限制其它会话无法查询、更新此表,知道此会话结束


方法3: UPDLOCK

SELECT * FROM tableName WITH (UPDLOCK)

在此锁表期间,其它会话可以查询此数据表,但无法对此数据表进行更新操作。


方法4: TABLOCK

SELECT * FROM tableName WITH (TABLOCK)

在此锁表期间,其它会话可以查询此数据表,但无法对此数据表进行更新操作。


方法5: HOLDLOCK

SELECT * FROM tableName WITH (HOLDLOCK)

在此锁表期间,其它会话可以查询此数据表,但无法对此数据表进行更新操作。

mssql sqlserver select查询会锁表,会使update delete超时


摘要:
下文讲述sqlserver大查询时,无法使用update delete操作的处理方法,如下所示:
实验环境:sql server 2008 R2



我们深知当对数据表执行select操作时,会产生share锁,当数据被共享锁时,其它事务只可对数据读取,无法对数据进行修改操作,
此时对高频更新的数据,则会产生相当大的影响。

当我们对数据的实时性要求不是很高时,我们可以显式的指定select查询时,不对表进行锁定,此举可以避免selectda大查询时,影响其它update delete操作,具体方法如下:

   ---在表后面加上nolock关键字,可使用无锁的方式查询数据库
   select * from tableName with(nolock)
   ---或
   select * from  tableName (nolock)