Belirtiler
Windows'da Microsoft SQL Server 2016 veya SQL Server 2017'de aşağıdaki koşullar altında düşük performansla karşılaşabilirsiniz:
-
Birden çok eşzamanlı INSERTSELECT işlemini geçici tablolarda çalıştırdığınızda.
-
sys.dm_os_waiting_tasks sorguladığınızda. Bu durumda , resource_description sütunu birden çok istek için Sayfa Boş Alanı (PFS) sayfalarında beklemeleri gösterir.
Neden
INSERTSELECT işlemleri için INSERT paralelliği Windows'da SQL Server 2016 veya SQL Server 2017'de kullanıma sunulmuştur. Yerel geçici tablolardaki INSERT'ler (yalnızca # önekiyle tanımlananlar ve ## ön ekleriyle tanımlanan genel geçici tablolar değil), artık geçici olmayan tabloların gerektirdiği TABLOCK ipucunu belirlemeye gerek kalmadan paralellik için otomatik olarak etkinleştirilir.
INSERT paralelliği genellikle sorgu performansını geliştirse de, çok sayıda eşzamanlı geçici tablo INSERTSELECT işlemi varsa, PFS sayfalarında çekişme önemli olabilir. Bazı durumlarda bu durum performansın genel olarak düşmesine neden olabilir.
Çözüm
Sorun ilk olarak SQL Server 2016 Service Pack 1'dedüzeltildi. SQL Server 2016 SP1'i uyguladıktan sonra INSERT'de Paralel INSERT'ler.. Select to local temporary tables varsayılan olarak devre dışı bırakılmıştır; bu da PFS sayfasındaki çekişme oranını azaltır ve eşzamanlı iş yükü için genel performansı artırır. Yerel geçici tablolara paralel INSERT'ler isteniyorsa, kullanıcılar yerel geçici tabloya eklerken TABLOCK ipucu kullanmalıdır.
Geçici çözüm bölümünde bahsedilen İzleme bayrağı 9495'i etkinleştirdiyseniz, TABLOCK ipucundan bağımsız olarak paralel ekleme özelliğini devre dışı bırakırken İzleme bayrağı 9495 SQL Server 2016 SP1 uygulandıktan sonra izleme bayrağını devre dışı bırakmanız ve kaldırmanız önerilir.
Toplu güncelleştirme bilgileri
Bu sorun, SQL Server 2016 için aşağıdaki toplu güncelleştirmede düzeltildi:
SQL Server için toplu güncelleştirmeler hakkında