当前位置:Gxlcms > 数据库问题 > SQL优化中的重要概念:死锁

SQL优化中的重要概念:死锁

时间:2021-07-01 10:21:17 帮助过:4人阅读

lock_timeout 1000
  • --跟踪死锁--会话1
  • set transaction isolation level serializable
  • begin tran
  • update t
  • set v =‘563‘
  • where idd =2
  • waitfor delay ‘00:00:10‘
  • update t
  • set v = ‘963‘
  • where idd =1
  • COMMIT
  • 2、会话2

    1. set transaction isolation level serializable
    2. begin tran
    3. update t
    4. set v =‘234‘
    5. where idd =1
    6. waitfor delay ‘00:00:10‘
    7. update t
    8. set v = ‘987‘
    9. where idd=2
    10. commit

    3、再开启一个会话,开启跟踪

    开启跟踪标志位:
                  DBCC TRACEON(trace#[,...n],-1) [With No_InfoMsgs]

    检查某种或某些标志位是开启,还是关闭:
                  DBCC TRACESTATUS(trace#[,...n],-1) [With No_InfoMsgs]

    1.trace#:指定一个或多个需要开启或需要检查状态的跟踪标志位数字
    2.    -1:如果指定了-1,则以全局方式打开某种或某些跟踪标志位
    3.with No_InfoMsgs:当命令中包含此参数时,则禁止DBCC输出信息性消息

    1. --跟踪1222能把详细的死锁信息返回到SQL Server的日志中
    2. --标志位-1表示跟踪标志位1222应该对所有SQL Server连接全局启用
    3. DBCC TraceOn(1222,-1)
    4. go
    5. --验证标志位是否启动
    6. DBCC TraceStatus
    7. go
    8. --关闭标志位
    9. DBCC TraceOff(1222,-1)
    10. go

    4、设置死锁优先级--设置死锁的优先级,调整一个查询会话由于死锁而被终止运行的可能性

    SET DeadLock_Priority  Low | Normal | High | numeric-priority

    1. --是当前连接很有可能被终止运行
    2. set deadlock_priority Low
    3. --SQL Server终止回滚代价较小的连接
    4. set deadlock_priority Normal
    5. --减少连接被终止的可能性,除非另一个连接也是High或数值优先级大于5
    6. set deadlock_priority High
    7. --数值优先级:-10到10的值,-10最有可能被终止运行,10最不可能被终止运行,
    8. --两个数字谁大,谁就越不可能在死锁中被终止
    9. set deadlock_priority 10

     

    • 点赞
    • 收藏
    • 分享
      • 文章举报
    技术图片 技术图片 不想长大啊 发布了416 篇原创文章 · 获赞 135 · 访问量 94万+ 他的留言板 关注

    SQL优化中的重要概念:死锁

    标签:vat   pat   upd   事务   信息   data   登录   原创   验证   

    人气教程排行