理解SQL Server中的锁—T-SQL查询进阶(4)
来源:未知 责任编辑:责任编辑 发表时间:2014-01-26 22:00 点击:次
图13.当更新一行时,其所在的页和表都会获得意向锁
其它类型的构架锁,键范围锁和大容量更新锁就不详细讨论了,参看MSDN官网 (http://msdn.microsoft.com/zh-cn/library/ms175519.aspx)
锁之间的兼容性微软提供了一张详细的表,如图14所示。
图14.锁的兼容性列表
理解死锁
当两个进程都持有一个或一组锁时,而另一个进程持有的锁和另一个进程视图获得的锁不兼容时。就会发生死锁。这个概念如图15所示。
图15.死锁的简单示意
下面我们根据图15的概念,来模拟一个死锁,如图16所示。
图16.模拟一个死锁
可以看到,出现死锁后,SQL Server并不会袖手旁观让这两个进程无限等待下去,而是选择一个更加容易Rollback的事务作为牺牲品,而另一个事务得以正常执行。
总结
本文简单介绍了SQL Server中锁的概念,原理,以及锁的粒度,模式,兼容性和死锁。透彻的理解锁的概念是数据库性能调优以及解决死锁的基础。
作者 宋沄剑
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>