Paralel İstatistik Güncellemesi


14

SQL Server 2008 veya sonraki sürümlerde, UPDATE STATISTICS WITH FULLSCANtek iş parçacıklı işlem mi yoksa paralellik kullanabilir mi? İstatistikleri varsayılan örnekleme ile güncellemeye ne dersiniz - paralellik kullanabilir mi? MAXDOPGüncelleme istatistiklerini belirten bir seçenek görmüyorum .

Yanıtlar:


22

Paralel istatistik güncelleştirmesi SQL Server 2005'ten beri bulunmaktadır. "Microsoft SQL Server 2005'te Sorgu İyileştiricisi tarafından Kullanılan İstatistikler" adlı TechNet makalesinde belgelenmiştir :

Makale özeti

Tam bir tarama gerçekleştirildiğinde (açıkça talep edilip edilmediğine bakılmaksızın) veri toplama için oluşturulan dahili sorgu genel forma sahiptir:

SELECT
    StatMan([SC0])
FROM 
(
    SELECT TOP 100 PERCENT
        [Column] AS [SC0]
    FROM [Table] WITH (READUNCOMMITTED)
    ORDER BY [SC0]
) AS _MS_UPDSTATS_TBL
OPTION (MAXDOP 16)

MAXDOPBuradaki ipucuna dikkat edin (bir kullanıcının ipucunu manuel olarak belirtmesinin bir yolu olmamasına rağmen). Örneklenen istatistiklerin toplandığı yerlerde, dahili sorgu TABLESAMPLEparalelliği önleyen yan tümcesi kullanır . Motor ayrıca MAXDOP 1dahili sorguda biraz gereksiz bir ipucu üretir .

Paralelliğin azaltılması gerekiyorsa MAXDOP, dahili sorgudaki ipucu Kaynak Yöneticisi (yalnızca Enterprise) kullanılarak geçersiz kılınabilir .

SQL Server 2016, paralel örneklenmiş istatistik güncellemesi ekler .


1

SQL Server 2016 SP2'den başlayarak MAXDOPseçeneği kullanabilirsiniz .

Güncelleme, CREATE STATISTICS ve UPDATE STATISTICS ifadeleri için MAXDOP seçeneği için destek ekler :

Bu güncelleştirme, Microsoft SQL Server 2016 ve 2017'de İSTATİSTİK OLUŞTUR ve GÜNCELLEŞTİRME İSTATİSTİKLERİ ifadeleri için MAXDOP seçeneği için destek ekler. Bu, veritabanı veya sunucu düzeyinde belirtilen maksimum paralellik derecesi (MAXDOP) için varsayılan ayarı geçersiz kılmanızı sağlar.

Not: Kaynak Valisi kullanılırsa, sonuçta ortaya çıkan paralellik derecesi, MAX_DOP iş yükü grubu tarafından sınırlanır.

Örneğin, Sales.SalesOrderDetail tablosunun kullanıldığını ve üzerinde birkaç istatistik oluşturulduğunu varsayın. Bu durumda, aşağıdaki komut dosyası her bir istatistiği 8'e eşit bir paralellik derecesi ile günceller.

UPDATE STATISTICS Sales.SalesOrderDetail WITH MAXDOP = 8

-3

GÜNCELLEME İSTATİSTİKLERİ herhangi bir iç paralelliğe sahip değildir. FULLSCAN veya SAMPLING ile çalışmanız önemli değildir. Tabii ki, birden fazla SQL Agent işi veya başka bir çelişki yoluyla, her biri farklı bir bağlantıda, aynı anda birkaç GÜNCELLEME İSTATİSTİKLERİ komutu çalıştırabilirsiniz. Donanım ve verilerle ilgili tam durumunuza bağlı olarak, tabloları yeniden endekslemenin FULLSCAN ile GÜNCELLEME İSTATİSTİKLERİNDEN daha hızlı ve muhtemelen daha iyi bir seçenek olduğunu görebilirsiniz.


İşaretlemek için özür dilerim ama neden bahsettiğiniz hakkında hiçbir fikriniz yok. Bu teknik incelemeden msdn.microsoft.com/tr-tr/library/dd535534(v=sql.100).aspx "Tam tarama için paralel istatistik toplama: Tam tarama ile toplanan istatistikler için, tek bir istatistik nesnesinin oluşturulması paralel olarak yapılabilir hem bölümlenmemiş hem de bölümlenmiş tablolar. " Ancak, 30 milyon satırlık tabloda tam tarama ile UPDATE STATISTICS kullandığımda paralellik göremiyorum
SQL Learner

Ayrıca, güncelleme statüsü şema kararlılık kilidini alır, böylece diğer güncelleme istatistiklerini çalıştırırsanız, daha önce tamamlanana kadar bekler.
SQL Öğrenen

4
@SQLLearner: Suç yok, ancak bu cevabın doğruluğuna bakılmaksızın, neden bu incelemeyi okuduysanız bu soruyu soruyorsunuz? Sorduğunuz her şeye bir cevap verir. Belirli bir senaryo için paralellik görmüyorsanız, lütfen soruyu ve ilgili diğer ayrıntıları belirtmek için düzenleyin.
Jon Seigel

Jon Seigel, soruyu gönderdikten sonra teknik incelemeyi buldu ve okudu, ancak web'i seraching etmek, güncelleme istatistiklerinin paralellik kullanıp kullanamayacağından emin değil.
SQL Öğrencisi

4
Beyaz kağıt ve sql2008 konusunda haklısınız. O beyaz raporu okudum; kafamdaki bilgiler güncel değil. Yeniden boyutlandırma, GÜNCELLEME İSTATİSTİKLERİ, FULLSCAN vs. ÖRNEK, işler için gereken süre ve istatistik sayfalarındaki verilerin stokastik kalitesi açısından sql2005 veya belki de sql2000 ile ilgili birçok sorun yaşadım. Sanırım şimdi tüm bu acı köprünün altında su. UPDATE STATS'i farklı tablolarda paralel olarak çalıştırabileceğinizi söyleyebilirim, ancak bu değerden daha fazla sorun gibi görünüyor ve değerli olması için çok fazla I / O çekişmeniz olabilir.
darin boğazı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.