sql - TSQL - 解决死锁
问题描述
我有一个随机挂断的 SQL Server 代理作业(执行存储过程)。
这次在进程被杀死之前,我运行sp_who2
并注意到具有相同 SPID 的多个记录(1 = 正在运行,所有其他记录 = 挂起)。这是由于并行性。但是这个过程比平时花费的时间要长得多。CPU时间相当大。该进程已被终止,但我觉得存在死锁问题(相信这是上次调查的原因)。查询是这样的:
INSERT INTO trg.TargetTable WITH (TABLOCKX, HOLDLOCK)
(Col1, Col2, Col3... )
SELECT Col1, Col2, Col3, ...
FROM src.SourceTable1
JOIN src.sourcetable2 ON ...
OPTION (RECOMPILE);
这会导致死锁(tablock/holdlock 并行运行)吗?如果是这样,为什么它会随机发生?只有当进程并行时?而且,我该如何解决?
更新:这是我从sp_who2
输出中看到的
解决方案
推荐阅读
- r - 在 Mac 中使用 R 读取 .xpt 文件
- python - 声明一个 numpy 矩阵的简洁方法
- android - 浮动操作按钮在 Android Studio 中的 Google 地图上不可见
- java - 打印 2 个最大值的索引
- fiware - fiware perseo 是否支持 esper 时间间隔?
- javascript - 自定义 Angular 6 材质日期选择器
- netsuite - 公式保存的搜索
- javascript - 按 ISOString 日期对 JavaScript 嵌套对象进行排序
- azure - Azure IoT 文件上传
- nio2 - Tomcat 8.5 中 Nio 和 Nio2 连接器之间的意外行为差异