SQL Server 2008 - 即使工作实际上已完成,查询也需要很长时间才能完成

发布于 2024-08-31 04:51:54 字数 218 浏览 5 评论 0原文

在 SSMS 中运行以下简单查询:

UPDATE tblEntityAddress SET strPostCode= REPLACE(strPostCode,' ','')

数据更新(至少在内存中)在一分钟内完成。我通过使用未提交的事务隔离级别执行另一个查询来验证这一点。但是,更新查询将继续运行另外 30 分钟。这里有什么问题呢?这是由于写入磁盘延迟造成的吗?

TIA

Running the following simple query in SSMS:

UPDATE tblEntityAddress
SET strPostCode= REPLACE(strPostCode,' ','')

The update to the data (at least in memory) is complete in under a minute. I verified this by performing another query with transaction isolation level read uncommitted. The update query, however, continues to run for another 30 minutes. What is the issue here? Is this caused by a delay to write to disk?

TIA

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

做个少女永远怀春 2024-09-07 04:51:54

最有可能的是,您的事务被影响 tblEntityAddress 的另一个事务锁定。

运行 sp_lock 并查看 tblEntityAddress 是否被另一个进程锁定。

Most probably, you transaction is locked by another transaction which affected tblEntityAddress.

Run sp_lock and see if tblEntityAddress is locked by another process.

冰雪梦之恋 2024-09-07 04:51:54

在单独的 SSMS 窗口中,尝试运行以下命令:

SELECT status, wait_type
FROM sys.dm_exec_requests
WHERE session_id = <SPID>

只需替换为与 UPDATE 查询关联的 SPID(底部栏中登录名后面括号中的数字)。

连续运行上面几次并记下 wait_type 是什么。等待有多种类型 - 看看是什么(并让用户知道),它可以突出显示原因。

更新:
引自这篇 MS 知识库文章

IO_COMPLETION

此等待类型表明 SPID
正在等待 I/O 请求
完全的。当你注意到这一点时
中 SPID 的 waittype
sysprocesses 系统表,您必须
通过使用来识别磁盘瓶颈
性能监视器计数器,
分析器跟踪,
fn_virtualfilestats 系统
表值函数,以及
用于分析查询的 SHOWPLAN 选项
与 SPID 相对应的计划。你
可以通过添加来减少这种等待类型
额外的 I/O 带宽或平衡
跨其他驱动器的 I/O。您还可以
通过使用索引减少 I/O,查找
错误的查询计划,并查找内存
压力。

In a separate SSMS window, try running the following:

SELECT status, wait_type
FROM sys.dm_exec_requests
WHERE session_id = <SPID>

Just replaced with the SPID associated with your UPDATE query (number in brackets after your login name in the bottom bar).

Run the above a few times in succession and note what the wait_type is. There are numerous types of waits - see what that is (& let use know), it could highlight the cause.

Update:
Quotes from this MS KB article:

IO_COMPLETION

This waittype indicates that the SPID
is waiting for the I/O requests to
complete. When you notice this
waittype for an SPID in the
sysprocesses system table, you must
identify the disk bottlenecks by using
the performance monitor counters,
profiler trace, the
fn_virtualfilestats system
table-valued function, and the
SHOWPLAN option to analyze the query
plans that correspond to the SPID. You
can reduce this waittype by adding
additional I/O bandwidth or balancing
I/O across other drives. You can also
reduce I/O by using indexing, look for
bad query plans, and look for memory
pressure.

_蜘蛛 2024-09-07 04:51:54

另一件需要考虑的事情是运行缓慢的触发器。

Another thing to consider is a slow running trigger.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文