我的删除查询已经运行了一整天,现在具有上述状态 - 任何人都可以提出建议吗?
(@P1 int)DELETE FROM ZQV_F_GL2CD
WHERE M_ID = @P1
如果我的问题含糊不清,请道歉 - 在此之前从未真正遇到这样的问题..
答案 0 :(得分:0)
PAGEIOLATCH
的等待类型表示它正在从磁盘上获取页面。
如果要提取大量数据或页面,则处理可能需要很长时间,但仍可能会删除。
我最近遇到了从表中删除大型Image
数据类型的情况。但是,这并不需要一整天,但最多可能需要5分钟才能删除5行。因此,如果有更多的行,那么可能会花费一整天的时间。
tempdb
由于使用implict transactions
而变得非常大,并且磁盘空间也很低,因此情况更加复杂。
我已经通过使用发现的here这个过程进一步对删除进行了分块来解决了这个问题。
SET NOCOUNT ON;
DECLARE @r INT;
SET @r = 1;
WHILE @r > 0
BEGIN
BEGIN TRANSACTION;
DELETE TOP (100000) -- this will change
dbo.SalesOrderDetailEnlarged
WHERE ProductID IN (712, 870, 873);
SET @r = @@ROWCOUNT;
COMMIT TRANSACTION;
-- CHECKPOINT; -- if simple
-- BACKUP LOG ... -- if full
END