read uncommitted隔离级别的例子:

begin tran
set deadlock_priority low
update Earth set Animal='老虎'
waitfor  delay '0:0:5' --等待5秒执行下面的语句
rollback tran
  开另外一个查询窗口执行下面语句
set tran isolation level read uncommitted
select * from Earth  --读取的数据为正在修改的数据 ,脏读
waitfor  delay '0:0:5'  --5秒之后数据已经回滚
select * from Earth  --回滚之后的数据

  read committed隔离级别的例子:
  begin tran
  update Earth set Animal='老虎'
  waitfor  delay '0:0:10' --等待5秒执行下面的语句
  rollback tran
  set tran isolation level read committed
  select * from Earth ---获取不到老虎,不能脏读
  update Earth set Animal='猴子1'   --可以修改
  waitfor  delay '0:0:10'  --10秒之后上一个事务已经回滚
  select * from Earth  --修改之后的数据,而不是猴子
  剩下的几个级别,不一一列举啦,自己理解吧。
  设置锁超时时间
  发生死锁的时候,数据库引擎会自动检测死锁,解决问题,然而这样子是很被动,只能在发生死锁后,等待处理。
  然而我们也可以主动出击,设置锁超时时间,一旦资源被锁定阻塞,超过设置的锁定时间,阻塞语句自动取消,释放资源,报1222错误。
  好东西一般都具有两面性,调优的同时,也有他的不足之处,那是一旦超过时间,语句取消,释放资源,但是当前报错事务,不会回滚,会造成数据错误,你需要在程序中捕获1222错误,用程序处理当前事务的逻辑,使数据正确。
  --查看超时时间,默认为-1
  select @@lock_timeout
  --设置超时时间
  set lock_timeout 0 --为0时,即为一旦发现资源锁定,立即报错,不在等待,当前事务不回滚,设置时间需谨慎处理后事啊,你hold不住的。
  仔细阅读,希望能分享给你一点点东西,谢谢,over。