4

SQL Server 2008 R2 にデータベースがあり、1 つのテーブルを除いてすべてのテーブルが正常に機能しているようです。

このテーブルでは、30 分以上経過してタイムアウトになるため、行を削除したり挿入したりすることはできません。

私の挿入は次のようになります。

INSERT INTO [dbo].[brokenTable] ([Change], [Date], [ProdId], [IntCol]) 
VALUES ('test', getdate(), null, '99999')

しかし、私は選択することができます。上位 200,000 の選択には 33 秒かかります。テーブルには最大 260,000 行しかありません。5 つの列があります (1 つの int 主キー、1 つの日付、別の int 列、および 2 つの varchar 列)。

このテーブルは以前はうまく機能し、迅速でした。私は構造をまったく変更していません。

なぜこれが起こったのか、それを修正する方法はありますか?

4

1 に答える 1

10

同じ問題を抱えているかもしれない将来の人々へ。

クエリの進行が非常に遅いと思いましたが、そうではありませんでした。別のセッションによってロックされていました。マーティン・スミスのコメントに従うと、彼は私がそれを修正するものを見つけるのを手伝ってくれました。

まず、走りました

select * from sys.dm_os_waiting_tasks

終了しないクエリを実行している間、および実行していないときに、LCK_M_IXを検索します。その行のセッションIDを使用し、それを次の行と照合しました

select * from sys.dm_exec_sessions

クエリをブロックしている問題のあるセッションを見つけました!

これは安全なセッションであることがわかっていたので、次のように終了しました。

Kill [sessionId]
于 2012-06-06T23:29:02.063 に答える