我有一个查询是花了很多,然后通常,我不知道是否卡住了。
查询是这样的:
INSERT XXXXXX WITH (TABLOCK) SELECT * FROM YYYYYY with (NOLOCK) WHERE ZZZZZZZZ = 1
这将插入数以百万计的行。 我有一个关于ZZZZZZZZ的索引。
没有阻塞会话。 当我检查sys.dm_exec_requests,它显示最后一个等待types是PAGEIOLATCH_SH我不知道这是什么意思,除了它有一些I / O。
sys.dm_exec_sessions显示状态为RUNNING,但sp_who2显示为SUSPENDED。
我试图看看表是否正在增长,但是当我调用sp_spaceused XXXXXX时,我一直得到相同的值。
我还可以做些什么?
更新:
在stackoverflow的答案的帮助下,我发现有一个I / O问题 ,并且我的查询导致平均每分钟插入约600个logging )。
我下一步要做什么?
在我开始假定我的磁盘坏了之前,我能做些什么?
查询正在运行,在进行大量插入时,PAGEIOLATCH_SH是典型的,因为它是在磁盘子系统上等待的。 该索引实际上阻碍了性能,因为索引为表格的每个插入操作获取插入。
数以百万计的logging很多,需要一些时间,它运行了多久?
如果你正在使用2005或2008,我肯定会运行SQL MVP Adam Mechanic开发的sp_whoisactive脚本。 基本上sp_who / sp_who2类固醇,应该给你所有你需要的信息。