LOCK

 

1.UPDLOCK
    允许您读取数据(不阻塞其它事务)并在以后更新数据,同时确保自从上次读取数据后数据没有被更改。当我们用UPDLOCK来读取记录时可以对取到的记录加上更新锁,从而加上锁的记录在其它的线程中是不能更改的只能等本线程的事务结束后才能更改。

2.ROWLOCK
     ROWLOCK告诉SQL Server只使用行级锁。ROWLOCK语法可以使用在SELECT,UPDATE和DELETE语句中。如果在UPDATE语句中有指定的主键,那么就总是会引发行级锁的。

3. NOLOCK
   NOLOCK可以忽略锁,直接从数据库读取数据。这意味着可以避开锁,从而提高性能和扩展性。但同时也意味着代码出错的可能性存在。你可能会读取到运行事务正在处理的无须验证的未递交数据。 这种风险可以量化。

 SQL Server支持更多类型的lock,如TABLOCK。SQL Server开始是用行级锁的,但是经常会扩大为页面锁和表锁,最终造成死锁。在实际应用中,需要考虑SQL操作并发量,实时性要求,表索引,数据分布模式等等。每种LOCK类型都有其最适用的场景。

通过Management--->Activity Monitor可以分析DB中LOCK的快照信息。通过DBCC命令可以把LOCK相关信息写入SQL Server Log中供监控。

对于Suspended状态的Process,可能会出现如下的奇怪现象:http://www.windows-tech.info/15/fd219330fa8cb37a.php

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值