私は、T-SQLでWAITFORのパフォーマンスや内部実装を見つけることを試みるが、運なしMSDNとのStackOverflowや他のサイトを通じて行っている、ここに私の質問WAITFORが他のプロセスやトランザクションに与える影響は?
はコード以下の場合ですが、私はトップ万を削除したいですテーブルDUMMY
の行私は、この削除ジョブを可能な限りデータベースの他のジョブに与える影響を最小限に抑え、他のジョブがあればそれを優先したいと考えています。だから私は一度に100行を削除し、それを2回の隣接する削除でスリープ時間で100回行う。
質問:
WAITFOR
遮断する時間の間に、このトランザクションは、CPUを消費するか、単にアイドルと1秒後にいくつかのイベントで蹴り上げを待っているのだろうか?DUMMY
テーブルにINSERT/UPDATE
をしようとする他のトランザクションがある場合、誰が優先されますか?
は本当に=これは、どのCPU
declare @cnt int
set @cnt = 0
while @cnt < 100
begin
delete top 100 from DUMMYTABLE where FOO = 'BAR'
set @cnt = @cnt + 1
waitfor delay '00:00:01'
end
ポイント2については、コード全体が表示されているかどうかによって異なります - コードがトランザクション内で実行されている場合、すべてが変更されます –
@Damien_The_UnbelieverはBEGIN TRANにはありませんCOMMITブロック、perlでラップされたtsql。 –
実際に影響を最小限に抑えたい場合は、FOOのインデックスがあることを確認してください –