gpt4 book ai didi

sql-server-2008 - Sql Server 2008 中的死锁故障排除

转载 作者:行者123 更新时间:2023-12-03 14:57:05 25 4
gpt4 key购买 nike

我的网站似乎无法处理大量访问者,我相信这是因为服务器太简单了。

2 小时前,我的网站点击量很大,我注意到发生了 3 个死锁错误,错误是:

System.Data.SqlClient.SqlException : Transaction (Process ID 58) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.



我不确定为什么会发生这种情况......查看堆栈跟踪,我可以看到这是通过选择查询发生的。

任何人都知道这个错误的原因可能是什么?

服务器运行的是 Windows 2008 和 Sql Server 2008。

最佳答案

SQL Server 2008 有多种方法可以识别死锁中涉及的进程和查询。

  • 如果死锁很容易重现,频率更高,并且您可以使用 SQL Profiler 分析 SQL 服务器(启用分析器时您在服务器上的访问和性能成本)将为您提供很好的死锁图形 View 。
    此页面包含使用死锁图所需的所有信息
    http://sqlmag.com/database-performance-tuning/gathering-deadlock-information-deadlock-graph
  • 大多数情况下,重现死锁很困难,或者它们发生在我们不想将 Profiler 附加到它并影响性能的生产环境中。

  • 我会使用这个查询来获得死锁的发生:
    SELECT
    xed.value('@timestamp', 'datetime') as Creation_Date,
    xed.query('.') AS Extend_Event
    FROM
    (
    SELECT CAST([target_data] AS XML) AS Target_Data
    FROM sys.dm_xe_session_targets AS xt
    INNER JOIN sys.dm_xe_sessions AS xs
    ON xs.address = xt.event_session_address
    WHERE xs.name = N'system_health'
    AND xt.target_name = N'ring_buffer'
    ) AS XML_Data
    CROSS APPLY Target_Data.nodes('RingBufferTarget/event[@name="xml_deadlock_report"]') AS XEventData(xed)
    ORDER BY Creation_Date DESC

    我不会朝着使用 (NOLOCK) 修复死锁的方向前进。那是滑坡并隐藏了原始问题。

    关于sql-server-2008 - Sql Server 2008 中的死锁故障排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/720508/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com