Paralellik En İyi Uygulamaları


9

Genel olarak paralellik belirleme ile ilgili en iyi uygulamalar nelerdir? SQL Server'ın 0tüm kullanılabilir işlemcileri kullanmak için varsayılan olduğunu biliyorum , ancak hangi durumda bu varsayılan davranışı değiştirmek istersiniz?

Bir yerde okuduğumu hatırlıyorum (bu makaleyi aramalıyım) OLTP iş yükleri için paralelliği kapatmanız gerektiğini (maxdop'u ayarlayın 1). Bunu neden yapacağınızı tamamen anladığımı sanmıyorum .

Maxdop'u ne zaman SQL Server'a (0) kadar tutarsınız? Paralelliği ne zaman kapatırsınız (1)? Maxdop'u belirli sayıda işlemciye ne zaman açıkça bildirirdiniz?

Paralelliğe ne sebep olur?

Yanıtlar:


11

Paralelliği genellikle devre dışı bırakmak istemezsiniz, çünkü yönetici görevleri için de devre dışı bırakılır. En iyi seçeneğiniz, dizin ekleyerek veya sabitleyerek veya şema değişikliklerini tamamlayarak paralelliğe neden olan sorguları düzeltmektir.


Güncellenmiş sorularınıza dayanarak ...

Bazı kişiler, veritabanını veya şemayı kontrol edemedikleri ve tüm sistemi ele geçirmek için tek bir sorgu istemediklerinden, satıcı tarafından oluşturulan uygulamalar için MAXDOP değerini 1 olarak değiştirir.

Şahsen nadir görülen durumlar dışında MAXDOP'u daima 0'da tutarım.

Paralellik, önceden belirlenmiş bir ayardan (paralellik ayarı için maliyet eşiği) geçen bir yürütme maliyetine sahip bir yürütme planındaki tek bir işlemden kaynaklanır. Bu durumda, SQL Server, işlemi hızlandırmak amacıyla isteği çok iş parçacıklı hale getirmek için paralelliğe tekme atacaktır. Paralellik için maliyet eşiği için varsayılan değer 5'tir. Birçok OLTP platformunda, 30 veya 40'a kadar yükseltmek isteyeceksiniz, böylece paralellik sadece gerçekten pahalı sorgular için devreye girecektir.


4

SQL Server (son milenyum, SQL Sever 6.5) ile tüm zamanlarımda herhangi bir paralellik ayarını kapatma veya değiştirme ihtiyacını hiç görmedim

@StanleyJohns yanıtından sonra ...
Kısa ve keskin sorguları olan bir OLTP sistemi asla maliyet eşiğine ( "paralellik için maliyet eşiği" ) ulaşmamalı , bu yüzden önemli olmamalı. Paralel olan bazı sorgularınız varsa, neden kanıtlanmamış bir şeye dayanarak onu kısıtlıyorsunuz?

Henüz saf bir OLTP sistemi görmedim. En uç noktada, belki de vardır, ancak ortalama sistemin de raporlaması vardır; gün içinde veya gece boyunca. Bu sorguların paralel gitme ve bundan yararlanma olasılığı daha yüksektir.

Bugün mevcut olan çok fazla CPU çekirdeği ile, bir farkı ölçebilir ve fark ederseniz , küresel "maksimum paralellik derecesini" ayarlamak için tartışmalı bir durum vardır .

Dediğim gibi benim önerim hiçbir şey yapmamak . Mrdenny'e benzer, ancak "saf OLTP sistemi diye bir şey yok"

Bunu söyleyerek , BIOS düzeyinde hiper iş parçacıklı çekirdekleri devre dışı bırakmak biraz kilometre olabilir, ancak bu farklı bir soru ...

Ayrıca, lütfen bakınız


3

Paralelliğe ne sebep olur ?: Denilen bir ayar var cost threshold for parallelism. Bu eşik aşıldığında paralellik kullanılır (önkoşullar karşılanmışsa).

OLTP sistemlerinin doğası, çok sayıda hızlı ve kısa işleme sahip olmaktır. Paralellik kullanmak bazen sorgu paralel olarak işlenecek şekilde bölünecek ve daha sonra geri gönderilmeden önce tekrar birleştirileceği için sorgu işleme süresini artırır. Bu nedenle maxdop'u 1 olarak ayarlamak için öneriler göreceksiniz.

Maxdop değerini 1 olarak ayarlamanın bir yararı, paralelliğin varsayılan olarak kapalı olmasıdır, ancak kullanarak sorgu düzeyinde etkinleştirebilirsiniz query hints.

Büyük veri kümelerinin döndürüldüğü veri ambarı sistemleri veya OLAP sistemleri için sorguyu paralellik kullanarak bölmenin bir yararı olabilir. Bu, sorgunun sorgulama işlem süresini kısaltmak için kullanılabilir çekirdekleri kullanmasına izin verir.


2

Çalıştırmak için saatler süren birden çok işleme bölünmüş karmaşık bir sorgu gördüm - genellikle sp_who2 aynı spid ile birden çok giriş olarak görebilirsiniz.

Bunu maxdop 1 olarak değiştirir ve sorgu bir dakikadan daha kısa sürede yürütülür.

Buradaki ders, paralellik söz konusu olduğunda motorun her zaman doğru bir şekilde elde edememesidir.


0

4 çekirdekli ve 8 çekirdekli sunucularımız var. OLTP sistemlerinin kullanıcıları için CPU'yu (ve ayrıca zaman aşımı sorunlarını) beklememek için paralelliğin (MAXDOP) 1 olarak ayarlanmasını tavsiye ederim. Bu kadar az çekirdekli OLAP veya raporlama sunucuları için, MAXDOP değerini 2 olarak ayarlamanızı ve Maliyet Eşiği'ni 30 olarak ayarlamanızı (senaryo için bu daha yüksek veya biraz daha düşük olabilir), böylece yalnızca en ağır sorguların paralellik kullanmasını sağlayabilirsiniz.

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.