Dünyanın dünyasından ilginç şeyler, talimatlar ve incelemeler. Maksimum paralellik derecesi - en uygun SQL değerini maksimum paralellik derecesini seçin

Performanstaki bir artışla ilişkili olan SQL Server'ın yapılandırılmasının sorunlarını düşünen bir sır değildir, çoğu uzmanlar donanımdaki bir artışın lehine bir seçim yapar. Ama her zaman haklı mı? Tüm sunucu kurulum yöntemleri zaten kullanılmış mı? Yapılandırma parametreleri ile çalışmanın ve varsayılan değerlerini değiştirdiği bilinmektedir. Bu sistemin performansını ve diğer özelliklerini iyileştirebilir. Bu konfigürasyon seçenekleri arasında, SQL yapılandırması çok sayıda soruya sahip bir seçeneğe sahiptir, bu seçenektir - maksimum paralellik derecesi (DOP) - işte bu konuda konuşalım ve bunun hakkında konuşalım.

Maksimum paralellik derecesi (DOP) seçeneği, SQL Server'ın talebi paraleleyebileceği ve kullanılan sunucu işlemcilerinin sayısını anlamadığı iş parçacığının sayısını belirler. Varsayılan parametre 0, maksimum paralellik derecesidir. Örneğin, 24 tanenin varsa - daha sonra 'maksimum paralellik derecesinin' değeri 24'e eşit olacaktır ve optimize edici olacaktır, eğer gerekli olduğunu düşünürse, bir talimatı yürütmek için tüm işlemcileri kullanabilir, yani sorgu olacak 24 akış ile paralel olun. Çoğu durumda, bu iyi, ama herkes için değil. Ayrıca, bu varsayılan parametrenin değerini kullanarak her zaman iyi değil. Bu parametrenin yapılandırılması gerekebilir, örneğin, aşağıdaki durumda: Örneğin, tüm çalışanların günlük işlemler hakkında bilgi sahibi olduğu bir uygulamaya sahibiz ve belirli bir süre içinde, her kullanıcı oluşturulan bir istek gerçekleştirir. Bir zaman atlamalı için tüm kullanıcı işlemlerinde bir rapor. Doğal olarak, zaman boşluğu büyükse, bu sorgu uzun süredir yürütülecektir ve DOP'u varsayılan olarak monte ederken, diğer kullanıcıların çalışmasını doğal olarak etkileyecek tüm işlemcileri alacaktır. Sonuç olarak, DOP değerinin değiştirilmesi, SQL sunucusunun diğer kullanıcılardan gelen cevap süresini artırmak için sorgunun kendisinde bir değişiklik olmadan yapabiliriz.
MS, değeri aşağıdaki gibi ayarlamanızı önerir:

Sunucu için TSQL'deki parametreyi ayarlama:

Sp_configure "maksimum paralellik derecesi", 4; Yeniden yapılandır.

Bu değeri belirli bir TSQL sorgusu için de ayarlayabilirsiniz:

AdventureWorks2008R2'yi kullanın; Git ProductId, OrderQUTY, Sum (lineetal) Toplam Satış.< $5.00 GROUP BY ProductID, OrderQty ORDER BY ProductID, OrderQty OPTION (MAXDOP 2); GO

Bu örnekte, "İPUCU" Maxdop, maksimum paralellik parametresinin varsayılan değerini 2'ye değiştirir. Geçerli ayarı görüntüleyin:

Exec Sp_Configure "Gelişmiş Göster", 1; Yeniden yapılandırma; Sp_configure "Max Paralelism Derecesi"

Şimdi bu değerin sorgunun yürütülmesi oranından nasıl etkilendiğini görelim. Test sorgusu için yukarıda yazılmış, daha uzun süre, başka bir seçim ekleyin. İstek aşağıdaki formu kazanacaktır:

< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty

Test makinemde, 'maksimum paralellik derecesi' değeri 0'da gösterilir. MSSQL, 4 çekirdekli işlemcili bir makine tarafından başlatılır. Farklı MAXDOP değerlerine sahip bir dizi deney yaptım: 1'e eşit - sorgunun paralelleştirilmemesi için; 2'ye eşit - sadece 2 çekirdek kullanarak; Eşit 4 - Varsayılan sekelini kullanan seçeneği belirlemek için Hepsini ve İpucu olmadan kullanın. Yürütme istatistiklerini elde etmek için, istek, İstatistik Ayarlanan İstatistik zamanına dahil edilmeli ve ayrıca Management Studio'daki Sorgu Planı Ekran düğmesini etkinleştirmelidir. Elde edilen sonuçları ortalamaya kadar, her sorguyu döngüde 3 kez gerçekleştirdim. Sonuçlar aşağıda görülebilir:

Dt.Productid, dt.orderqty, sum (dt.linetotal) satışından Toplam olarak seçin .SalsorderDetail DT, (Satışlardan * 'ni seçin.< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty OPTION (MAXDOP 1); SQL Server Execution Times: CPU time = 45942 ms, elapsed time = 46118 ms. SQL Server Execution Times: CPU time = 45926 ms, elapsed time = 46006 ms. SQL Server Execution Times: CPU time = 45506 ms, elapsed time = 45653 ms.

Sorgu açısından, ipucu (Maxdop 1) takarken, sorgu paralelleştirmeden gerçekleştirildiği açıktır. Ortalama sorgu yürütme süresi 45925.66 ms

Dt.Productid, dt.orderqty, sum (dt.linetotal) satışından Toplam olarak seçin .SalsorderDetail DT, (Satışlardan * 'ni seçin.< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty OPTION (MAXDOP 2); SQL Server Execution Times: CPU time = 51684 ms, elapsed time = 28983 ms. SQL Server Execution Times: CPU time = 51060 ms, elapsed time = 26165 ms. SQL Server Execution Times: CPU time = 50903 ms, elapsed time = 26015 ms.

İPUCU (MAXDOP 2) takarken, sorgu, 2 CPU'lara paralel olarak yapıldı, sorgunun yürütülmesi açısından yürütme sayısında görülebilir. Ortalama sorgu yürütme süresi 27054.33 ms

Dt.Productid, dt.orderqty, sum (dt.linetotal) satışından Toplam olarak seçin .SalsorderDetail DT, (Satışlardan * 'ni seçin.< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty OPTION (MAXDOP 4); SQL Server Execution Times: CPU time = 82275 ms, elapsed time = 23133 ms. SQL Server Execution Times: CPU time = 83788 ms, elapsed time = 23846 ms. SQL Server Execution Times: CPU time = 53571 ms, elapsed time = 27227 ms.

Bir ipucu takarken (Maxdop 4), sorgu 4 CPU'lara paralel olarak yapıldı. Sorgunun ortalama yürütme süresi 24735.33 ms

Dt.Productid, dt.orderqty, sum (dt.linetotal) satışından Toplam olarak seçin .SalsorderDetail DT, (Satışlardan * 'ni seçin.< $5.00) dt2 WHERE dt.UnitPrice < $5.00 GROUP BY dt.ProductID, dt.OrderQty ORDER BY dt.ProductID, dt.OrderQty SQL Server Execution Times: CPU time = 85816 ms, elapsed time = 23190 ms. SQL Server Execution Times: CPU time = 85800 ms, elapsed time = 23307 ms. SQL Server Execution Times: CPU time = 58515 ms, elapsed time = 26575 ms.

talep paralel olarak ve 4 CPU'larda yapıldı. Ortalama sorgu süresi 24357.33m

linkler: http://support.microsoft.com/kb/2023536

Amaç: SQL paralelliğinin 1C istekleri ile çalışması için etkisini inceleyin

Edebiyat:

Test ortamı:

· Windows Server 2008 R2 Kurumsal

· MS SQL Server 2008 R2

· 1C Kurumsal 8.2.19.90

Şekil 1. SQL Özellikleri "Genel"


Şekil 2. SQL Özellikleri "Advansed"

Aletler:

· SQL Server Profiler

· 1C istek konsolu

Test isteği:

SEÇ

AK. İsim olarak ad

NIN-NİN

Kayıt olmak. AK olarak basınç sınıflandırıcı

Dahili bağlantı Kayıt olmak. AK1 olarak basınç sınıflandırıcı.

Tarafından AC.KOD \u003d AK1.KOD

Hazırlık:

SQL Server profiler'i çalıştırır, bağlantıyı ayarlayın, olayları ve sütunları Şekil 3'te gösterildiği gibi işaretleyin.


Şekil 3. İz Özellikleri

Veritabanımız için seçimi kurun


Şekil 4. Baz filtresi

Azaltma:

· Maksimum paralellik derecesi - MDOP

· Paralellik için Sost Eşiği - Maliyet

Sıralı bir istek planını test etme (MDOP \u003d 1)


Şekil 5. Talep konsolu - performans süresi 20 sn.

SQL Server "Maksimum Paralellik" Sunucusu 1 olarak ayarlanır (paralellik olmadan). Profilerdeki sonuca bakıyoruz (Şekil 6)


Şekil 6. Sıralı Talep Planı

SQL Server, sıralı bir istek planı oluşturdu, süre: toplam yükleme işlemi CPU \u003d 6,750 (ler) ve sorgunun yürütülmesi için zaman \u003d 7.097 (ler)

Paralel bir istek planını test etme (MDOP \u003d 0, Maliyet \u003d 5)

SQL Server'ı Paralellik Moduna aktarın (SQL sorgusunda):

Usta kullanın;

Exec Sp_Configure "Gelişmiş seçeneği göster", 1;

Geçersiz kılma ile yeniden yapılandırma.

Usta kullanın;

sp_configure "maksimum paralellik derecesi", 0;

Geçersiz kılma ile yeniden yapılandırma.

Aynı sorguyu gerçekleştirin (Şekil 7)


Şekil 7. Konsol Talepleri - Yürütme süresi 16 saniye.

Önemli olanı profilleyiciye kontrol edin (Şekil 8)


Şekil 8. Paralel istek planı

SQL Server bu sefer bir paralel sorgu planı oluşturdu, CPU'nun toplam yüklenmesi \u003d 7.905 saniye ve sorgunun süresi \u003d 3,458 saniye

Sıralı bir istek planını test etme (MDOP \u003d 0, Maliyet \u003d 150)

Paralel plandan kurtulmaya çalışacağız, "Paralellik için Maliyet Eşiği" parametresi kullanarak. Varsayılan olarak, parametre 5. olarak ayarlanır. Bizim durumumuzda, paralel planın oluşumundan, 150 (SQL sorgusunda) kurtulmak mümkündü:

Usta kullanın;

sp_configure Exec. "Parallelsm için Maliyet Eşiği", 150 ;

Sorgunun bu koşullarda yürütülmesini kontrol edin (Şek. 9)

Şekil 9. Konsol Talepleri - Yürütme süresi 20 sn.

Sonucu profilleyiciye kontrol edin (Şek. 10)


Şekil 10. Sıralı istek planı.

SQL Server, sıralı bir istek planı oluşturdu. Toplam yükleme CPU \u003d 7.171 saniye, sorgu yürütme süresi \u003d 7, 864 saniye.

Sonuçlar:

· Bir SQL Server paralel plan sunucusu kullanılarak bir 1C kurumsal ortamda bir test sorgusu gerçekleştirmek, sıralı bir plana kıyasla önemli bir performans kazancı verir (16 sn. 20 saniyeye karşı - kazançlar 4 sn.)

· Bir paralel istek planı kullanırken SQL Server tarafından test sorgusunu gerçekleştirin. Sıralı bir istek planı kullanırken (3.5 sn. 7.1 saniye.)

· SQL Server paralelliği, yalnızca MDOP parametresini kullanarak değil, aynı zamanda "Paralellik için Maliyet Eşiği" parametresinin de kullanılamaz.

  • Öğretici

Bu kılavuz, kurulum için Rusça'da basit bir el kitabı arayan yeni başlayanlar için tasarlanmıştır. ingilizce versiyon SharePoint 2013 için kullanılacak SQL Server 2012.
Bu makale profesyoneller için değildir.

Tüm işler 3 aşamaya ayrılır:

  • SQL Server 2012'yi yükleme
  • Maksimum Paralellik Sunucusu Yapılandırma Ayarı derecesini ayarlama
  • Doğru ayar hesapSharePoint 2013'ü yüklemek için tasarlanmıştır
Ayrıca, makalede işlemi açıklar microsoft kurulumları.Net çerçeve. 3.5 MS ortamında Windows Server 2012 R2 Standart.

Dikkat: Kesimin altında birçok resim!

SQL Server 2012'yi yükleme

1. Kurulumdan önce, sabit diskte yeterli boş alan olduğundan emin olun (davamda 2.7 GB aldı).
Dağıtımı başlattıktan sonra, Öğeyi seçin " Kurulum"Sol menüde, sonra" Öğe "ı tıklayın. Yeni SQL Server tek başına veya mevcut bir kuruluma özellikler ekleyin":

2. Kurulum Sihirbazı'nı başlatın. Kontrol edecek. "Ayrıntıları göster" düğmesini tıklayabilirsiniz ve ayrıntılı bir rapora bakabilirsiniz:

3. Detaylı Rapor. "Tamam" düğmesine basın:

4. Ürün anahtarını girin ve "İleri" düğmesine basın:

5. Lisans Sözleşmesi şartlarına katılın.
Bunu yapmak için bir kene koymak " Lisans koşullarını kabul ediyorum

6. Kurulum rolü adımında, ilk öğeyi seçin " SQL Server özelliği kurulumu"." İleri "düğmesine basın:

7. "Özellik Seçimi" Adımında " Veritabanı motoru hizmetleri.", "Yönetim Araçları - Temel"Ve" Yönetim Araçları - Tamamlandı". Sonra" İleri "düğmesine basın:

8. Sonra yükleyici başka bir çek çalıştırır. "Ayrıntıları göster" düğmesini tıklayabilirsiniz ve ayrıntılı bir rapora bakabilirsiniz:

9. Detaylı rapor. (Bu aşamada "Microsoft .NET Framework 3.5 yüklü ..." kuralında bir hatam vardı. Aşağıdaki bu konuda). "İleri" düğmesine basın:

10. "Örnek Yapılandırması" adımında, SQL Server hizmetinin örneğini yapılandırmanız gerekir.
Bu makalenin yeni başlayanlar için tasarlandığını tekrar ediyorum. Bu nedenle, SQL Server'ın sunucunuzda yüklenmediğini varsayıyoruz, bu da tüm varsayılan ayarları bırakacağınız anlamına gelir. "İleri" düğmesine basın:

11. Bu adımda, kurulum sihirbazı disk alanı için gereksinimleri görüntüler. "İleri" düğmesine basın:

12. Sunucu yapılandırma adımında, hizmet için bir etki alanı hesabı belirtmelisiniz " SQL Server veritabanı motoru"." Hesap Adı "ve" Şifre "alanlarını doldurduktan sonra" İleri "düğmesine basın:

13. "Veritabanı Altyapısı Yapılandırması" adımı, geçerli kullanıcıyı SQL Server yöneticilerine eklemek için yeterlidir. Bunu yapmak için "Geçerli Kullanıcı Ekle" düğmesini tıklatın, ardından "İleri" düğmesini tıklayın:

14. Bir sonraki adımda "İleri" düğmesine basın:

15. Daha sonra, kurulum sihirbazı tekrar kontrolü yürütür ve sonuçlarını görüntüler. "İleri" düğmesine basın:

16. "Kurulmaya Hazır" adımında, Sihirbaz Özet Bilgilerini görüntüler. Burada "Yükle" düğmesini tıklamanız gerekir:

17. Kurulum tamamlandıktan sonra, oluşturulan işlemler hakkında bilgi görüntülenir:

18. Bilgisayarı yeniden başlatmak için bu aşamada intrider. Bazı durumlarda (örneğin, Microsoft .NET Framework 3.5'ü kurarken), kurulum sihirbazının kendisi, bilgisayarı yeniden başlatmak için bir teklif içeren bir pencere gösterecektir. Reddetme.

Maksimum Paralellik Sunucusu Yapılandırma Ayarı derecesini ayarlama

Varsayılan olarak, "maksimum paralellik derecesinin" parametresinin değeri 0'dır.
SharePoint 2013, bu parametrenin 1'e eşit olmasını gerektirir.
Düzeltmek kolaydır!

1. Başlatma Microsoft SQL Server Management Studio (Başlat - Tüm Programlar - Microsoft SQL Server 2012 - SQL Server Management Studio).

2. Sunucuya bağlantı ekranında "Bağlan" düğmesini tıklayın.

3. Pencerede sunucunuza sağ tıklayın " Object Explorer."Ve seç" Özellikleri.":

4. Sol menüsünde açılan sunucu özellikleri penceresinde, Sayfa'yı seçin " ileri"Ekranın altındaki özelliklerin listesini yapın. Parametre değerini ayarlayın Maksimum paralellik derecesi" içinde 1 ve "Tamam" ı tıklayın:

5. SQL Server Management Studio'yu kapatmayın, kullanışlı olacak.

SharePoint 2013 ayarlama için hesap haklarını belirleme

SharePoint 2013'ün kurulumunun, SQL Server'da artan haklara sahip olması gereken hesap.
Bu hesap aşağıdaki rolleri vermeniz önerilir:
  • dbcreator
  • securityAdmin.
  • halka açık
1. Pencerede SQL Server Management Studio'da " Object Explorer."Öğeyi Genişlet" Güvenlik". Sonra noktaya sağ tıklayın" Girişler."Ve seç" Yeni giriş.":

2. "Giriş Adı" alanında girin alan adı SharePoint 2013'ü kurmayı ve yapılandırmayı planladığınız hesap.

3. Sol menüde, sayfayı seçin " Sunucu rolleri."Ve" dbcreator "ve" SecurityAdmin "rolünü kontrol edin ve ayrıca" genel "rolünün zaten işaretlendiğinden emin olun. Sonra" Tamam "ı tıklayın:

Şimdi SQL Server kurulum SharePoint 2013 için hazır.

Microsoft .NET Framework 3.5'i MS Windows Server 2012 R2 Standart'ta Yükleme

Noktasının 9 numaralı adımında " SQL Server 2012'yi yükleme"Bir hatam vardı: .NET Framework 3.5 yüklü değildi.
Bu sorunu çözmek için aşağıdaki adımlar yapılmalıdır:

1. Konsolu açmalısınız " Sunucu Yöneticisi.".

2. Sol menüde "Gösterge Tablosu" öğesini seçin.

3. Pencerenin ortasında, "Roller ve Özellikler Ekle" öğesine tıklayın.

4. Açılan usta, "başlamadan önce" atlayın.

5. "Kurulum tipi" adımında, öğeyi seçin " Rol Bazlı veya Özellik Tabanlı Kurulum"." İleri "düğmesine basın.

6. Bir sonraki adımda, her şeyi varsayılan olarak bırakın ve "İleri" düğmesine basın.

7. "SONRAKİ" düğmesini tıklatarak "Sunucu Rolleri" adımı atlayın.

8. "Özellikler" adımında, ".NET Framework 3.5 Özellikleri" onay kutusunu kutlarız. "İleri" düğmesine basın.

9. Kurulum işlemini tamamladıktan sonra, "Roller ve Özellikler Sihirbazı Ekle" Sihirbazı'nı kapatabilirsiniz.

10. Hazır!

Kafanın üstündeki tüm iyi ve huzurlu gökyüzü!

P.S. Mutlu Kozmonotik Günü!

Maksimum paralellik derecesi (DOP) - Birçok soru ile ilişkilendirilen ve birçok yayına ayrılmış olan ek SQL Server yapılandırma seçeneği. Blogunun bu makalesinde, Yazar, bu seçeneğin yaptığını ve nasıl kullanılacağını küçük bir netlik yapmayı umuyor.
Öncelikle, yazar, belirtilen seçeneğin, birden fazla bağlantıyı (veya kullanıcılara) servis ederken kaç işlemcinin SQL Server'ı kullanabileceğini belirlediği hakkında herhangi bir şüpheyi çıkarmak ister. SQL Server dört aktif olmayan işlemciye erişebiliyorsa ve dört işlemcinin tümünü kullanacak şekilde yapılandırılmışsa, maksimum paralellik derecesine bakılmaksızın, dört işlemciyi de kullanır.
Peki bu seçenek ne verir? Bu seçenek, SQL Server'ın bir istek için kullanabileceği maksimum işlemci sayısını ayarlar. SQL Server isteği iade edilmesi gerekiyorsa büyük hacim Veriler (birçok kayıt), bazen paralelleştirmek, her biri sıra alt kümelerini iade edecek birkaç küçük isteğe çarpmak mantıklıdır. Böylece, SQL Server birden fazla işlemci kullanabilir ve sonuç olarak, çok işlemcili sistemlerde, tüm sorgunun çok sayıda kayıt potansiyel olarak tek işlemci sisteminden daha hızlı döndürülebilir.
SQL Server "Sorgu Paralelliği" tetikler (birkaç akış için bir talebi kıran) önce dikkate alınması gereken birçok kriter vardır ve burada ayrıntılı bir nokta yoktur. Onları bolca bulabilir, "Paralellik derecesi" ifadesini arayabilirsiniz. Paralelleştirme kararının, hafıza işlemcisinin erişilebilirliğini ve özellikle işlemcilerin kendilerinin kullanılabilirliğine dayandığını söylüyor.
Öyleyse, neden bu seçeneğin kullanılmasıyla düşünmemiz gerekiyor - çünkü varsayılan değerde bırakmak (SQL Server'ın kendisi paralelleşmeye karar verir), bazen istenmeyen etkiler elde edebilirsiniz. Bu etkiler şöyle görünüyor:

    Paralel talepler daha yavaştır.

    İsteklerin yürütme süresi belirleyici olmayabilir ve düzensiz kullanıcılar olabilir. Yürütme süresi değişebilir çünkü:

      İstek bazen paralel olabilir ve bazen değil.

      Talebi, işlemcilerin bundan önce aşırı yüklendiğinde paralel bir istekle engellenebilir.

Devam etmeden önce, yazar, paralelliklerin iç organizasyonuna dalmak için özel bir ihtiyaç olmadığını fark etmek ister. Bununla ilgileniyorsanız, bu bilgilerin daha ayrıntılı olarak belirtildiği satırdaki kitaplarda "paralel sorgu işleme" makalesini okuyabilirsiniz. Yazar, paralelliğin iç örgütü hakkında bilmeniz gereken tek iki önemli şey olduğuna inanıyor:

    Paralel talepler, "Maksimum Paralellik" seçeneğinde belirtilenden daha fazla iş parçacığı oluşturabilir. DOP 4, daha fazla ipucu, dört istek için dört tane üretebilir ve sıralama, akışlar, birimler ve montajlar vb. İçin kullanılan ek akışlar oluşturabilir.

    Taleplerin paralelleştirilmesi, bekleme tipi cxpacket veya 0x0200 ile beklemek için farklı örümceklerden vazgeçebilir. Bu, paralel operasyonlar sırasında beklemede olan örümcekler bulmak ve Sysprocesses Waittype: CXPacket'te kullanılabilir. Bu görevi kolaylaştırmak için, yazarın saklı yordamını blogunda kullanmayı teklif eder: track_waitstats.

Ve böylece "İstek paralelleşirken daha yavaş yapılabilir" nedeni?

    Sistem çok zayıfsa bant genişliği Disk alt sistemleri, ardından talebi analiz ederken, ayrışması paralellikten daha uzun süre daha uzun gerçekleştirilebilir.

    Olası veri blokları veya bir başkası tarafından üretilen işlemci için veri aralıklarını paralel olarak kullanılan ve daha sonra işlemi başlattı.

    Tahmini için hiçbir endeks yoksa, masanın taramasına yol açar. İsteğin içindeki paralel operasyon, talebin tutarlı bir yürütme planı ile ve doğru indeksle daha hızlı tamamlanacağı gerçeğini gizleyebilir.

Bütün bunlardan, sorgunun bir paralellik olmadan yürütülmesini kontrol etmenin önerisini takip eder (DOP \u003d 1), bu olası sorunları tanımlamaya yardımcı olacaktır.
Paralelliğin yukarıda belirtilen etkileri, kendi başlarına, taleplerin iç mekaniğinin OLTP uygulamalarında kullanım için uygun olmadığından sizi ortaya çıkarmalıdır. Bunlar, yürütme süresindeki bir değişikliğin kullanıcıları tahriş edebileceği ve sunucunun aynı anda birçok kullanıcıya hizmet eden sunucunun, işlemci iş yükü profilinin bu uygulamaları nedeniyle paralel yürütme planını seçme olasılığı olası değildir.
Bu nedenle, paralellik kullanacaksanız, daha sonra muhtemelen, veri çıkarma görevleri (Veri Ambarı), birçok istek olmadığı karar alma veya raporlama sistemlerinin desteklenmesi için gerekli olacaktır, ancak onlar zor ve yürütülürler. Büyük bir hacimli belleği olan güçlü bir sunucu.
Paralellik kullanmaya karar verirseniz, DOP için hangi değeri yüklenmelidir? Bu mekanizma için iyi bir uygulama, eğer 8 işlemciniz varsa, sonra DOP \u003d 4'ü kurmanızdır ve bu büyük bir olasılık derecesi ile optimum kurulum olacaktır. Ancak, çalışacağı garanti yoktur. Bunun, DOP için farklı değerleri test etmek olduğundan emin olmanın tek yolu. Buna ek olarak, yazar, konseyin ampirik gözlemlerine dayanarak, bu numarayı asla stoktaki işlemci sayısının yarısından fazlasını yapmamak istedi. Yazar altıdan az bir işlemciye sahipse, 1'de DOP'yu, sadece paralelleşmeyi yasaklayacaktır. Sadece bir kullanıcının (bazı veri çıkarma teknolojileri veya raporlama görevleri) işlemini destekleyen bir veritabanınız varsa, bu durumda, istisnada, DOP'u 0 (varsayılan değer) olarak yüklemek mümkün olacaktır. SQL Server'ın sorguyu paralelleştirmek için bir karar vermesini sağlar.
Makaleyi tamamlamadan önce, yazar sizi paralel dizinlerin paralel oluşturulması, DOP için yüklediğiniz numaraya bağlı olduğu konusunda sizi uyarması istedi. Bu, bu işlemin performansını artırmak için dizinler oluşturma veya yeniden oluşturma sırasında değiştirmek isteyebileceğiniz ve elbette, MAXDOP Hint sorgusunu kullanabilirsiniz; yapılandırma ve minimum yük saatinde kullanılabilir.
Son olarak, hatalarınız nedeniyle paralel olduğunda isteğiniz yavaşlayabilir, bu nedenle son servis paketinin sunucunuza yüklendiğinden emin olabilirsiniz.

Proc track_waitstats (@num_samples int \u003d 10 , @ Delaynum int \u003d 1 @ DayalType Nvarchar ( 10 ) \u003d "Dakika") AS - T. Davidson - Bu saklı yordam \u003d olduğu gibi \u003d garanti yok, - ve hiçbir hak vermez. - Dahil edilen komut dosyasının kullanımı şartlara tabidir - http://www.microsoft.com/info/cpyright.htm adresinde belirtildi - @Num_Samples, Waitstats'ı yakalamanın sayısıdır, - Varsayılan 10 kezdir. Varsayılan gecikme aralığı 1 dakika - Deliyelik gecikme aralığıdır. DelayType olup olmadığını belirtir. - Gecikme aralığı dakikalar veya saniyelerdir - Varsa Waitstats tablosunu oluşturun, aksi takdirde kesilir Varsa Nocount Ayarlayın (Seç 1 Sysobjects'ten ad \u003d "waitstats") tablo waitstats oluşturun (varchar ( 80 ), Sayısal istek ( 20 ,1 ), Sayısal ( 20 ,1 ), Sayısal ( 20 ,1 ), Şimdi DateTime Varsayılan GetDate ()) Başkaları Tuncate Tablo WaitStats DBCC SQLPERF (Waitstats, Clear) - Sil dışarı @i int deyir. 8 ), @ Dt varchar ( 3 ), @ Şimdi DateTime, @ totalwait sayısal ( 20 ,1 ), @ Endtime datetime, @ begintime datetime, @ hr int, @ min int, @ sec int @i \u003d 1 @DT \u003d Case Alt (@DelayType) "dakika" ne zaman "dakika" sonra "dakika", "dakika" ne zaman "m" "m" sonra "m" sonra "m" sonra "m" "m" sonra "m" sonra "m" "M" ne zaman "m" olduğunda "saniye" ne zaman "saniye", "ikinci" olduğunda "s", "s" ne zaman "s" olduğunda "s" "S" ne zaman "s" olduğunda "S" olduğunda "S" GRIGHTTYPE ucu @DT'de değilse ("S", "M") yazdırmaya başlar. "Lütfen Gecikme Tipini E.G. saniye veya dakika" Dönüş sonu @DT \u003d "S" başlarsa, @sec \u003d @ Delaynum% 60 @min \u003d CAST ((@delaynum /) 60 ) İnt olarak) @hr \u003d CAST ((@min / 60 ) İnt olarak) Select @min \u003d @ min% 60 Eğer @DT \u003d "M" u başlatırsa, @sec \u003d 0 @Min \u003d @ DelayNum% 'ı seçin 60 @Hr \u003d CAST (@delaynum / 60 ) İnt olarak) son seç @delay \u003d sağ ("0" + dönüştürmek (varchar ( 2 ), @ HR), 2 2 ), @ min), 2 ) + ":" + + Sağ ("0" + dönüştürme (varchar ( 2 ), @ Sn), 2 ) Eğer @ HR\u003e ise 23 ya da @min\u003e 59 veya @sec\u003e 59 Seçmeye başlayın. "HH: MM: SS Gecikme Zamanı\u003e 23:59:59" "Gecikme Aralığı ve Türü:" + Convert (Varchar ( 10 ), @ DelayNum) + "," + @DelayType + "" + @Delay geri dönüş sonu<= @num_samples) begin insert into waitstats (, requests, ,) exec ("dbcc sqlperf(waitstats)" ) select @i = @i + 1 Waitfor Gecikme @Delay Sonu --- Waitstats Raporu Oluşturma Get_Waitstats --//--//--//--//--//--//--//--//--//-//--//--//--//--//--//--//--//--/ Proc get_waitstats olarak oluşturun - Bu saklı yordam \u003d olduğu gibi \u003d garantiler olmadan ve - hiçbir hak vermez. - Dahil edilen komut dosyasının kullanımı, belirtilen şartlara tabidir. - http://www.microsoft.com/info/cpyright.htm adresinde. -- - Bu PROS WaitStats Rapor Listesini Bekleme Türlerini oluşturacak - YÜZDE - Track_waitstats yürütüldüğünde çalıştırılabilir NOCOUNT ON DECLE DATETIME, @ totalwait sayısal olarak ayarlayın () 20 ,1 ), @ Endtime Datetime, @ Begintime DateTime, @ HR Int, @ Min Int, @ Sect Int Select @ Now \u003d MAX (şimdi), @ Begintime \u003d min (şimdi), @ endtime \u003d max (şimdi) Where \u003d " Toplam " --- Toplamdan Bekar, Uyku ve Resource_Queue'u çıkarın @Totalwait'i seçin \u003d Sum () + 1 Wearstats'tan ("Waitfor", "Uyku", "Resource_Queue", "Toplam", "*** Total ***") ve şimdi \u003d @Now - ayarlanmış toplamları yerleştirin, yüzde azalan Whatstats'ı Sil \u003d "*** Toplam ***" ve şimdi \u003d @now waitstats içine eklemek seçin "*** Toplam ***", 0 , @ Totalwait, @ totalwait, @ şimdi seçin ,, yüzde \u003d oyuncu 100 * / @ Sayısal olarak totalwait ( 20 ,1 )) Nerede olmadığı ("Waitfor", "uyku", "Resource_QUEUE", "TOPLAM") ve şimdi \u003d @NOW sipariş yüzdesi olarak

Bu yazıda, yalnızca MS SQL Server hakkında konuşacağız. ORACLE, DB2, POSTRGRE ile 1C kullanmak için "mutluluğu deneyin" ise, bu bilgiler işe yaramaz olacaktır. Ancak 1c'de, öncelikle MS SQL Server'da uzman olduklarını anlamanız gerekir. DB2'deki uzmanlar IBM'den çaba sarf ediyor. Uzun zamandır iyi ya da kötü iddia edebilirsiniz, bu DBMS önemlidir, biri, en "pürüzsüz" 1C, MS SQL Server ile çalışır. "Ön" ile en son mesajlarla yargılanmak, DB2 ile daha fazla veya daha az iyi bir çalışma. Her ne kadar kişisel olarak DB2 ile çalışmak için 1C ayarlama deneyimi olmasına rağmen, 8.1 sürümünde DB2 daha fazlası - her şey bir şekilde değildi. Her durumda, başka bir DBM'lerin seçimi açıkça gerekçesiyle - MS SQL'de (yük dengeleme, ızgara vb. Küme) veya finans (zaten satın alınmış) veya bir platform (Linux'ta) .

Yani MS SQL Server ile yapmanız gerekenler için:

1) Minimum ve maksimum hafızayı yapılandırın. Minimum sistem hafızasının yarısıdır. Maksimum - 2GB olmadan bellek sistemi. Bu, Management Studio ile yapılır - sunucu özelliklerinde:

2) Öncelik işlemci sekmesinde yüklü değilse - yüklemeniz gerekir

3) 1'e maksimum paralellik derecesi.

4) SQL Server Agent'ı dahil edin, veritabanı postasını özelleştirin - orada zor bir şey yoktur, ayrıntılı olarak tanımlamayacağım.

5) Servis planlarını özelleştirin:
Genel:
a) İstatistikleri güncelleyin - her 2 saatte bir
b) DBCC FreeProccache - her 2 saatte bir
Her veritabanı için:
a) tam yedekleme
b) Fark Yedekleme
c) Endekslerin birleştirilmesi - her gün
d) perestroika indeksleri - hafta sonları geceleri
e) Bazın bütünlüğünü kontrol etmek - hafta sonu geceleri ayda bir kez

6) Her veritabanı için kurtarma modelini (özelliklerde) basit olarak yüklemenizi öneririm. 24/7 sisteminiz yoksa ve bazda 1000'den az kullanıcınız yoksa, hata toleranslı bir küme yoktur ve verileri geri yüklemek için herhangi bir ekipmanın çıkışında varsaydığımız SLA imzalamadınız. bir saniye (ve son yedeklemeden beri değil) bu öneri makul olacaktır. Aksi takdirde, uzun süre çok yakında olacak ve inkar eden bir şekilde nereden doğacağınızı tranzaction log yapacaksınız.

7) Tempdb veritabanını normal veritabanlarından başka bir diske çıkarın - RAID dizisini yeniden yapılandırmanız ve performansını azaltmanız durumunda bile. Aksi takdirde, 1 kullanıcı herkesin işini felç edebilecektir. Sabit bir disk yerine bir donanım accelereator varsa, o zaman elbette ayıramaz ve ona tempdb koyamazsınız, ancak bu sadece varsa

8) Herhangi bir izleme aracını ayarlayın - örneğin, spot ışığını beğendim http://www.quest.com/spotlight-on-sql-server-enterprise/

9) Kendinizi Microsoft En İyi Uygulama Analizatörü ile kontrol edin - http://www.microsoft.com/download/tr/details.aspx?id\u003d15289 - Sadece ayarlarla değil, aynı zamanda birçok sorunu çözmekle de yardımcı olan harika bir araç.

Şimdi bütün bunları yaptığımız için kısaca:

1) Hafıza. Minimum değer, bazı bilinen bazı nedenler için SQL Server'u "Glitches" denizi yalnızca "Glitches" den tasarruf edecektir. Hepsini yemelisin! SQL Server Memory Optimizer'ın aynı iyileştiricisinin hala onu inciteceğine karar vermesi durumunda maksimum değer sizi takasdan kurtaracak.

3) Çok önemli bir nokta - IMMO'nun tüm işlem sistemlerinde 1'e yerleştirilmesi gerekir. Öncelikle, bu, sırasıyla 1 istek yürütmeye çalışan farklı işlemler arasındaki kilitlerin bir kısmını önler, bizi biraz "garip" hatalardan korur. İkincisi ... 1 "Kill" talebi, sistem kullanıcılarının geri kalanıyla ilgili olarak bir şekilde doğru olmayan tüm sunucu kaynaklarını çıkarabilecektir. Parametre, 1 isteğin birçok işlemci çekirdeği olarak işlenemeyeceğini belirler.

5) İstatistik ve prosedür önbelleğinin temizlenmesi hakkında - bu "bir duruşma" dir ve burada genellikle ReynDefation'ı unuturuz. Bu arada, bu prosedür, özellikle tabanın hacmindeki artışla oldukça önemlidir, önemi artar. Bazen performansın% 60'ına kadar indeks parçalanmasında kaybolur.

7) Bir donanım hızlandırıcısı veya farklı erişim hızlarına sahip 2 disk varsa, veritabanlardaki dosya gruplarını vurgulayarak ve bireysel tabloları farklı erişim zamanına sahip farklı disk dizilerine bölünmeyi önendi. Sonuçta, kabul edersiniz, "depolardaki ürünler" ve "Ek Bilgilerin Ek Bilgilerin Depolanması" Referans Kitabı, depolanması için gereksiniminin nesnesinin 2'sini oluşturur. Tüm dosyaları ve fotoğrafları veri tabanında hızlı dizideki depolamak gerekli değildir - ayrı, hızlı değil, ancak birçok yer var (ve bir sürü dosyadan sonra indirmekten korkmuyor) yol).