2013-05-23 10 views
7

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

  1. , bu işlemin CPU tüketmek ya da bazı olay 1 saniye tarafından tekme sonrası için sadece boşta ve bekliyor olacak?

  2. 1 saniye boyunca, tablosundaki INSERT/UPDATE tablosuna girmeye çalışan başka işlemler var mı?

Gerçekten = Herhangi CPU

  • Durum tüketmez yardımına veya bu

    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 
    
  • +0

    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 –

    +0

    @ Damien_The_Unbeliever değişir, BEGIN TRAN ... COMMIT bloğu, sadece tsql perl ile sarılmıştır. –

    +1

    Eğer gerçekten çarpmayı en aza indirmek istiyorsanız, FOO –

    cevap

    18
    • için herhangi bir analiz takdir Sen 2 sorgusu ile bunu görebilirsiniz

    askıya pencereler:

    SELECT @@SPID; 
    GO 
    WAITFOR DELAY '000:03:00'; -- three minutes 
    

    Sonra diğer

    SELECT * FROM sys.sysprocesses S WHERE S.spid = 53; -- replace 53 
    

    Not: SQL Server 2012 SP1 ama AFAIK davranış, üzgünüm bu

    içinde bir görüşme WAITFOR ise tabloyu değiştirir aynı

    Nokta 2 kaçırılırsa çalışıyor. Bu bir kilit değil.

    +1

    'da bir indeks bulunduğundan emin olun gbn, cevabınız ve denemeniz çok faydalı! Daha önce böyle bir şey yapabileceğimizi bilmiyoruz. çok teşekkürler! –

    İlgili konular