Ben MSDN ve Stackoverflow ve şans olmadan başka siteler üzerinden gitmiş, T-SQL WAITFOR için performans veya iç uygulanmasını öğrenmek için deneyin benim sorumWAITFOR'un diğer süreçler ve işlemler üzerindeki etkisi nedir?
kodunun altına İçin, ben üst 10.000 silmek istiyor Tablo DUMMY
'dan satırlar. Bu silme işinin, veritabanının diğer işlerinde mümkün olan en az performans etkisine sahip olmasını ve diğerlerine (varsa) öncelik vermesini istiyorum. Bu yüzden bir seferde 100 satır siliyorum ve iki bitişik silmede 100 kez uyku zamanı ile yapıyorum.
Soru: WAITFOR
engelleme süre boyunca
, bu işlemin CPU tüketmek ya da bazı olay 1 saniye tarafından tekme sonrası için sadece boşta ve bekliyor olacak?
1 saniye boyunca, tablosundaki
INSERT/UPDATE
tablosuna girmeye çalışan başka işlemler var mı?
Gerçekten = Herhangi 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. nokta için, tüm kodun bize gösterilip gösterilmediğine bağlıdır - kod bir işlemin içinde çalışıyorsa, bu her şey değiştiğinde –
@ Damien_The_Unbeliever değişir, BEGIN TRAN ... COMMIT bloğu, sadece tsql perl ile sarılmıştır. –
Eğer gerçekten çarpmayı en aza indirmek istiyorsanız, FOO –