gpt4 book ai didi

sql-server - 我怎么知道为什么我的查询需要这么长时间?

转载 作者:行者123 更新时间:2023-12-04 00:53:17 24 4
gpt4 key购买 nike

我有一个查询花费的时间比平时长很多,我不知道它是否卡住了。

查询是这样的:

INSERT XXXXXX WITH (TABLOCK)
SELECT * FROM YYYYYY with (NOLOCK)
WHERE ZZZZZZZZ = 1

这将插入数亿行。我有一个关于 ZZZZZZZZ 的索引。

没有阻塞 session 。当我检查 sys.dm_exec_requests 时,它显示最后一个等待类型是 PAGEIOLATCH_SH 我不确定这是什么意思,除了它与 I/O 有关系。

sys.dm_exec_sessions 显示状态为 RUNNING,但 sp_who2 显示为 SUSPENDED。

我试图查看表是否在增长,但是当我调用 sp_spaceused XXXXXX 时,我一直得到相同的值。

我还能做什么?

更新:

在下面的答案的帮助下,我发现有 an I/O issue ,而我的查询 is resulting in an average of about 600 records being inserted per minute )。

我的下一步是什么?

在我开始认为我的磁盘坏了之前我该怎么做?

最佳答案

如果您尝试以下操作

select * from sys.dm_os_waiting_tasks

它是否正在等待更改的资源地址?

select * 
into #t1
from sys.dm_os_wait_stats

waitfor delay '00:01'

select *
into #t2
from sys.dm_os_wait_stats

SELECT #t2.wait_type,
#t2.waiting_tasks_count - #t1.waiting_tasks_count as waiting_tasks_count,
#t2.wait_time_ms- #t1.wait_time_ms as wait_time_ms,
#t2.signal_wait_time_ms- #t1.signal_wait_time_ms as signal_wait_time_ms
FROM #t2 JOIN #t1 ON #t2.wait_type = #t1.wait_type
where #t2.wait_type not in ('CHECKPOINT_QUEUE','CHKPT','FT_IFTS_SCHEDULER_IDLE_WAIT',
'KSOURCE_WAKEUP',
'LAZYWRITER_SLEEP',
'LOGMGR_QUEUE',
'REQUEST_FOR_DEADLOCK_SEARCH',
'SQLTRACE_BUFFER_FLUSH' ,
'XE_DISPATCHER_WAIT',
'XE_TIMER_EVENT', 'WAITFOR')
order by wait_time_ms desc

关于sql-server - 我怎么知道为什么我的查询需要这么长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3687568/

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