科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道细化解析:如何解决有关死锁的疑难问题

细化解析:如何解决有关死锁的疑难问题

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

在死锁中,由于多种线程在相互控制或其它线程控制的一套资源中等待,所以无法继续。死锁是循环相关的,最好通过标识相关链和有关资源中的参与者。

作者:赛迪网 limeinan 来源:天新网 2008年3月28日

关键字: Mssql SQL SQL Server 数据库

  • 评论
  • 分享微博
  • 分享邮件

DB 在跟踪标记 1204 中表示为如下方式之一:

DB:db_id
DB:db_id[BULK-OP-DB] 标识了备份数据库占用的数据库锁。
DB:db_id[BULK-OP-LOG] 标识了特定数据库的备份日志占用的锁。
IND:
标识在索引资源上创建的索引占用的锁。

IND 在跟踪标记 1204 中表示为如下方式之一:

IND:db_id:object_id:index_id
IND:db_id:object_id:index_id[INDEX_ID] 表明锁在索引 ID 上。
IND:db_id:object_id:index_id[INDEX_NAME] 表明锁在索引名上。
标识应用程序资源占用的锁。
APP 在跟踪标记 1204 中表示为APP:lock_resource;
例如,APP:Formf370f478。

当 SQL Server 选取应用程序资源为死锁牺牲品时,该应用程序资源的所有者将不会得到先前描述的错误信息。相反,当 sp_getapplock 存储过程在该应用程序资源上执行时,应用程序所有者会获得返回代码"-3"。

牺牲资源所有者:将 SQL Server 选择的特殊线程指定为中断死锁循环的牺牲品。选中的线程(以 SPID x ECID 0 标识)和所有现有子线程(以 SPID x ECID > 0 标识)将被终止。

下一个分支:表示来自死锁循环中涉及的相同 SPID 的两个或多个子线程。

当死锁涉及到平行线程时,各种子线程可能会在通讯缓冲区发生阻塞,而且一个线程会在等待别的子线程中结束。只有所有的其它线程都涉及死锁,才会发生死锁状态。下一个分支表示跟踪其它路径的死锁链。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章