MAXDOP = 1, Paralellik İçin Sorgu İpuçları ve Maliyet Eşiği


11

Bir örnek MAXDOP1 olarak ayarlandıysa ve belirli sorguların paralel gitmesine izin vermek için sorgu ipuçları kullanılıyorsa, gerçekte paralel olup olmayacağına karar vermek için SQL tarafından hala Paralellik için Maliyet Eşiği kullanılıyor mu?

Her ne kadar bu bağlantı 1 ise CTFP'nin yok sayıldığını düşündürse de bu özel bilgiyi kazamamıştım MAXDOP. Bu, maliyet ne olursa olsun, hiçbir istek olarak sorgu ipucu olmadan mantıklıdır MAXDOP, 1 olduğunda paralel gidecektir .

Bu iki talebin beklenen davranışının ne olacağını kimse bana bildirebilir mi?

Örnek 1:

Instance Maxdop: 1 
CTFP: 50 
Query hint: Maxdop=2 
Query cost: 30

Örnek 2:

Instance Maxdop: 1
CTFP: 50
Query hint: Maxdop=2
Query cost: 70

Yanıtlar:


20

Bir örnek MAXDOP1 olarak ayarlandıysa ve belirli sorguların paralel gitmesine izin vermek için sorgu ipuçları kullanılıyorsa, gerçekte paralel olup olmayacağına karar vermek için SQL tarafından hala Paralellik için Maliyet Eşiği kullanılıyor mu?

Basit cevap: evet .

ayrıntılar

Burada ayrılmak önemli olan birkaç ayrı şey var:

  1. Nedir etkili paralellik maksimum derecede mevcut bir sorguya?

    Buna katkıda bulunanlar (genel olarak önem sırasına göre):

    • Kaynak Yöneticisi MAX_DOPayarı
    • Sorgu ipucu MAXDOPayarı
    • max degree of parallelismÖrnek yapılandırma seçeneği

    Ayrıntılar, Sunucunun “Maks Paralellik Derecesi” ayarında, Kaynak Yöneticisinin MAX_DOP ve sorgu ipucu MAXDOP'ta açıklanmaktadır - SQL Server hangisini kullanmalıdır? Jack Li, Microsoft SQL Server Müşteri Hizmetleri ve Destek Kıdemli Uzman Mühendisi. Aşağıdaki tablo bu bağlantıdan çoğaltılmıştır:

    paralellik tablosu

  2. Bir sorgu planı paralellik kullanır mı?

    SQL Server sorgu iyileştiricisi her zaman önce bir seri plan bulur *.

    O zaman eğer:

    • Daha fazla optimizasyon haklı; ve
    • En iyi seri planın maliyeti cost threshold for parallelismyapılandırma değerini aşıyor


    ... optimizer paralel bir plan bulmaya çalışacak .

    O zaman eğer:

    • Paralel bir plan bulunur (yani mümkündür); ve
    • Paralel planın maliyeti en iyi seri plandan daha azdır


    ... paralel bir plan üretilecek.

Not:cost threshold for parallelism Yalnızca etkileyen bir paralel planı için optimize edici görünüyor olsun. Paralel plan önbelleğe alındıktan sonra, CTFP ayarından bağımsız olarak yeniden kullanıldığında (iş parçacıkları kullanılabilir olduğu sürece) paralellik kullanarak yürütülür.


Örnekler

Her iki örnek için, örneğin maxdop 1 ve sorgu ipucu maxdop 2 ile, mevcut etkili DOP 2'dir. Paralel bir plan seçilirse, DOP 2'yi kullanır.

örnek 1

50 CTFP Verilen ve en ucuz seri planı bulundu 30 maliyetini, SQL Server olacak değil paralel bir planı bulmaya çalışın. Bir seri plan üretilecektir.

ÖRNEK 2

50 CTFP ve en ucuz seri plan 70 maliyet bulundu , SQL Server paralel bir plan bulmaya çalışacaktır . Bu planın (bulunursa) maliyeti 70'den azsa (seri plan maliyeti), paralel bir plan üretilecektir.


Sorgu optimizasyonunun sonucu her zaman tek bir önbellekli plandır: seri veya paralel. Optimize edici, search0 (TP) ve search1 (QP) aşamalarında yalnızca bir seri plan bulur .

Bu olabilir sonra (tarif edildiği gibi) yeniden çalıştırmak search1 bir gereksinime sahip olan bir paralel bir plan üretir. Daha sonra, şimdiye kadarki en iyi plan maliyetine dayalı olarak seri ve paralel arasında bir seçim yapılır. Bu seçim, optimizasyonun search2'ye (Tam Optimizasyon) geçmesi durumunda bağlayıcıdır . Optimizasyonun her aşaması birçok alternatifi göz önünde bulundurur, ancak bir aşamadan elde edilen çıktı her zaman seri veya paralel olan en iyi tek bir plandır.

Myth bu konuda bazılarını yazdım : SQL Server her Paralel Plan ile bir Seri Plan Önbelleğe


2

Örnek 1 Örnek Maxdop: 1 CTFP: 50 Sorgu ipucu: Maxdop = 2 Sorgu maliyeti: 30

MAXDOP sorgu ipucu, geniş kapsamlı maksimum paralellik derecesi ayarını geçersiz kılar, ancak CTPF 50 ve sorgu maliyeti 30 olduğundan seri plan için gidebilir.

Örnek 2 Örnek Maxdop: 1 CTFP: 50 Sorgu ipucu: Maxdop = 2 Sorgu maliyeti: 70

Burada yine MAXDOP ipucu olduğu için maksimum paralellik derecesi 2 olarak alınacak, ancak CTFP 50 olarak alınacak ve mümkünse Paul'ün paralel olarak çalışabileceği gibi sorgulama yapılacaktır.

Bir örnekte MAXDOP 1 olarak ayarlanmışsa ve belirli sorguların paralel gitmesine izin vermek için sorgu ipuçları kullanılıyorsa, paralel olarak paralel olup olmayacağına karar vermek için SQL tarafından hala Paralellik için Maliyet Eşiği kullanılıyor mu?

MAXDOP ipucu , maksimum paralellik derecesi örneğinin geniş ayarını geçersiz kılar.

MAXDOP ipucundan alıntılar docs.microsoft

MAXDOP numarası Şunlar için geçerlidir: SQL Server 2008 - SQL Server 2017.

Bu seçeneği belirten sorgu için sp_configure ve Kaynak Yöneticisi'nin maksimum paralellik derecesi yapılandırma seçeneğini geçersiz kılar. MAXDOP sorgu ipucu sp_configure ile yapılandırılan değeri aşabilir. MAXDOP, Kaynak Yöneticisi ile yapılandırılan değeri aşarsa, Veritabanı Altyapısı Kaynak Yöneticisi MAXDOP değerini kullanır,

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.