zoukankan      html  css  js  c++  java
  • SQL Server 中 ROWLOCK 行级锁

    一、ROWLOCK的使用

    1、ROWLOCK行级锁确保,在用户取得被更新的行,到该行进行更新,这段时间内不被其它用户所修改。因而行级锁即可保证数据的一致性,又能提高数据操作的并发性。

    2、ROWLOCK告诉SQL Server只使用行级锁,ROWLOCK语法可以使用在SELECT,UPDATE和DELETE语句中。

    3、例如select语句中

    A 连接中执行 

    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ 

    begin tran 

    select * from tablename with (rowlock,UpdLock) where id=3 

    waitfor delay '00:00:05' 

    commit tran 



    B连接中如果执行 

    update tablename set colname='10' where id=3 --则要等待5秒 

    update tablename set colname='10' where id <>3 --可立即执行 

     

    二、SQL Server中使用ROWLOCK需要注意的地方

    1、如果你错误地使用在过多行上,数据库并不会聪明到自动将行级锁升级到页面锁,服务器也会因为行级锁的开销而消耗大量的内存和CPU,直至无法响应。

    2、select 语句中,RowLock在不使用组合的情况下是没有意义的,With(RowLock,UpdLock) 这样的组合才成立,查询出来的数据使用RowLock来锁定,当数据被Update的时候,锁将被释放

  • 相关阅读:
    Java 异常基础详解
    Try-with-resources
    Java集合详解
    Java面向对象之多态
    Java面向对象之继承
    Java面向对象之封装
    Java 接口
    Java抽象类
    Java类和对象
    Java 数组结构
  • 原文地址:https://www.cnblogs.com/zhangq/p/10101155.html
Copyright © 2011-2022 走看看