sql-server - 超过 15 分钟的简单 SQL Server 更新查询
问题描述
我有一个包含 5 列和 3 行的 SQL Server 数据库表。架构说明:
cId
(int
) 是表的 id,它不是自动数字的,但现在它的值是 1-2-3。cIdFoot
(int
) 是另一个具有 4 行的静态数据表的外键。cwId
(int
) 它是来自有很多列但只有 1 行的表的另一个外键。- 2 个类型的描述列
varchar(MAX)
虽然cIdFoot
和cwId
都是外键,因为它们在此表中几乎是空表,但它们当前未创建为外键。
我的更新是这样的:
UPDATE myTable
SET desc1 = '2018', desc2 = '2018'
WHERE (cId = 1)
这个简单的 SQL 脚本需要 6 分钟,而表只有 3 行。
进行选择似乎没问题,但是当我尝试更新时,它需要很长时间,而且通常会超时。我在日志中看到-> .ldf 文件似乎没有变大,可能是它已损坏或创建得不好。在更新或插入时,具有超过 10000 行的异常大的表可以正常工作。
任何帮助将不胜感激。
执行计划:执行计划
解决方案
根据您的评论,SPID 85 正在阻止您的更新查询。您的更新将不会完成,直到此过程完成或释放您的更新所需的锁定。
如果你杀死 SPID 85,更新将会运行,但你需要弄清楚这个进程在做什么以及为什么它在那个表上持有一个锁。在您修复它之前,它不太可能停止获取此表的锁定(并因此阻止您的更新)。
推荐阅读
- java - Java 无法运行 shell 脚本
- python - 一些将 txt 文件与开头删除单词结合起来的代码
- django - Django 一对多(关联同表)
- node.js - service.getAllUsers 不是函数 [arangodb 和 node.js]
- vb.net - 通过代码创建没有数据库的 DataColumns 和 Dataset
- ios - 如何在标签左侧和文本开头之间放置一些空格?
- php - php_network_getaddresses:getaddrinfo 失败:名称或服务未知(0)
- python - Scrapy:如何使用抓取的项目作为动态 URL 的变量
- c# - GetHashCode 为不同的位标志枚举返回相同的值
- r - 在对多列进行分组/汇总时如何处理依赖项?