Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, SQL Server Management Studio veya Transact-SQL kullanarak SQL Server'da sunucu yapılandırma seçeneğinin nasıl yapılandırıldığı max worker threads açıklanır. seçeneği max worker threads sorgu isteklerini, oturum açma, oturumu kapatma ve benzer uygulama isteklerini işlemek için SQL Server genelinde kullanılabilen çalışan iş parçacığı sayısını yapılandırmaktadır.
SQL Server, aşağıdaki koşulları sağlamak için işletim sistemlerinin yerel iş parçacığı hizmetlerini kullanır:
- Bir veya daha fazla iş parçacığı, SQL Server'ın desteklediği her ağı aynı anda destekler.
- Bir iş parçacığı veritabanı denetim noktalarını işler.
- İş parçacıkları havuzu tüm kullanıcıları yönetir.
için max worker threads varsayılan değer 0'dır. Bu, SQL Server'ın başlangıçta çalışan iş parçacığı sayısını otomatik olarak yapılandırmasına olanak tanır. Varsayılan ayar çoğu sistem için en iyisidir. Ancak, sistem yapılandırmanıza bağlı olarak belirli bir değere ayarlamak max worker threads bazen performansı artırır.
Sınırlamalar
Sorgu isteklerinin gerçek sayısı ayarlanan max worker threads değeri aşabilir ve sql server bu durumda çalışan iş parçacıklarını havuza alır, böylece bir sonraki kullanılabilir çalışan iş parçacığı isteği işleyebilir. Bir çalışan iş parçacığı yalnızca etkin isteklere atanır ve istek karşılandıktan sonra serbest bırakılır. İsteğin yapıldığı kullanıcı oturumu/bağlantısı açık kalsa bile bu durum oluşur.
max worker threads Sunucu yapılandırma seçeneği, altyapı içinde oluşturulabilecek tüm iş parçacıklarını sınırlamaz. LazyWriter, Checkpoint, Günlük Yazıcısı, Hizmet Aracısı, Kilit Yöneticisi veya diğerleri gibi görevler için gereken sistem iş parçacıkları bu sınırın dışında oluşturulur. Kullanılabilirlik Grupları içindeki bazı çalışan iş parçacıklarını max worker thread limit kullanır, ancak sistem iş parçacıklarını da kullanır (bkz. Kullanılabilirlik Gruplarına Göre İş Parçacığı Kullanımı). Yapılandırılan iş parçacığı sayısı aşılıyorsa, aşağıdaki sorgu ek iş parçacıklarını oluşturan sistem görevleri hakkında bilgi sağlar.
SELECT s.session_id,
r.command,
r.status,
r.wait_type,
r.scheduler_id,
w.worker_address,
w.is_preemptive,
w.state,
t.task_state,
t.session_id,
t.exec_context_id,
t.request_id
FROM sys.dm_exec_sessions AS s
INNER JOIN sys.dm_exec_requests AS r
ON s.session_id = r.session_id
INNER JOIN sys.dm_os_tasks AS t
ON r.task_address = t.task_address
INNER JOIN sys.dm_os_workers AS w
ON t.worker_address = w.worker_address
WHERE s.is_user_process = 0;
Öneriler
Bu seçenek gelişmiş bir seçenektir ve yalnızca deneyimli bir veritabanı uzmanı tarafından değiştirilmelidir.
Bir performans sorunu olduğundan şüpheleniyorsanız, bu büyük ihtimalle çalışan iş parçacıklarının bulunabilirliğiyle ilgili değildir. Bunun nedeni büyük olasılıkla çalışan iş parçacıklarını meşgul eden ve serbest bırakmayan etkinliklerle ilgilidir. Örnek olarak sistemde uzun süre çalışan sorgular veya uzun süre bekleyen sorgulara neden olan performans sorunları (G/Ç, engelleme, mandal beklemeleri, ağ beklemeleri) verilebilir. En yüksek çalışan iş parçacığı ayarını değiştirmeden önce performans sorununun kök nedenini bulmak en iyisidir. Performansı değerlendirme hakkında daha fazla bilgi için bkz. Performansı İzleme ve Ayarlama.
İş parçacığı havuzu, çok sayıda istemci sunucuya bağlandığında performansı iyileştirmeye yardımcı olur. Genellikle her sorgu isteği için ayrı bir işletim sistemi iş parçacığı oluşturulur. Ancak, sunucuya yüzlerce bağlantıyla, sorgu isteği başına bir iş parçacığı kullanmak büyük miktarda sistem kaynağı tüketebilir. seçeneği, max worker threads SQL Server'ın daha fazla sayıda sorgu isteğine hizmet vermek için bir çalışan iş parçacığı havuzu oluşturmasını sağlar ve bu da performansı artırır.
Aşağıdaki tabloda, mantıksal CPU'ların, bilgisayar mimarisinin ve SQL Server sürümlerinin çeşitli bileşimlerine dayalı olarak otomatik olarak yapılandırılan maksimum çalışan iş parçacığı sayısı (değer 0 olarak ayarlandığında), şu formül kullanılarak gösterilmektedir: Varsayılan Maksimum Çalışanlar + ((mantıksal CPU - 4) * CPU başına çalışanlar).
| Mantıksal CPU sayısı | 32 bit bilgisayar (SQL Server 2014'e (12.x)) kadar) | 64 bit bilgisayar (SQL Server 2016 (13.x) SP1'e kadar) | 64 bit bilgisayar (SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) ile başlayarak) |
|---|---|---|---|
| <= 4 | 256 | 512 | 512 |
| 8 | 288 | 576 | 576 |
| 16 | 352 | 704 | 704 |
| 32 | 480 | 960 | 960 |
| 64 | 736 | 1472 | 1472 |
| 128 | 1248 | 2496 | 4480 |
| 256 | 2272 | 4544 | 8576 |
Service Pack 1 ile SQL Server 2016'ya (13.x) kadar, CPU başına çalışanlar yalnızca mimariye (32 bit veya 64 bit) bağlıdır:
| Mantıksal CPU sayısı | 32 bit bilgisayar † | 64 bit bilgisayar |
|---|---|---|
| <= 4 | 256 | 512 |
| > 4 | 256 + ((mantıksal CPU'lar - 4) * 8) | 512 †† + ((mantıksal CPU'lar - 4) * 16) |
† SQL Server 2016(13.x) ile başlayarak, SQL Server artık 32 bit işletim sistemine yüklenemez. SQL Server 2014 (12.x) ve önceki sürümleri çalıştıran müşterilerin yardımı için 32 bit bilgisayar değerleri listelenir. 32 bit bilgisayarda çalışan bir SQL Server örneği için en fazla çalışan iş parçacığı sayısı olarak 1.024 önerilir.
†† SQL Server 2017'den (14.x) başlayarak, 2 GB'tan az belleğe sahip makineler için Varsayılan En Fazla Çalışan değeri 2'ye bölünür.
SQL Server 2016 (13.x) SP2 ve SQL Server 2017 (14.x) ile başlayarak , CPU başına çalışanlar mimariye ve işlemci sayısına bağlıdır (4 ile 64 arasında veya 64'ten büyük):
| Mantıksal CPU sayısı | 32 bit bilgisayar † | 64 bit bilgisayar |
|---|---|---|
| <= 4 | 256 | 512 |
| > 4 ve <= 64 | 256 + ((mantıksal CPU'lar - 4) * 8) | 512 †† + ((mantıksal CPU'lar - 4) * 16) |
| > 64 | 256 + ((mantıksal CPU'lar - 4) * 32) | 512 †† + ((mantıksal CPU'lar - 4) * 32) |
† SQL Server 2016(13.x) ile başlayarak, SQL Server artık 32 bit işletim sistemine yüklenemez. SQL Server 2014 (12.x) ve önceki sürümleri çalıştıran müşterilerin yardımı için 32 bit bilgisayar değerleri listelenir. 32 bit bilgisayarda çalışan bir SQL Server örneği için en fazla çalışan iş parçacığı sayısı olarak 1.024 önerilir.
†† SQL Server 2017'den (14.x) başlayarak, 2 GB'tan az belleğe sahip makineler için Varsayılan En Fazla Çalışan değeri 2'ye bölünür.
Tavsiye
64'ten fazla mantıksal CPU kullanma hakkında daha fazla bilgi için bkz. 64'ten fazla CPU'su olan bilgisayarlarda SQL Server çalıştırmak için en iyi yöntemler.
Tüm çalışan iş parçacıkları uzun süre çalışan sorgularla etkin olduğunda, bir çalışan iş parçacığı tamamlanıp kullanılabilir duruma gelene kadar SQL Server yanıt vermiyor gibi görünebilir. Bu davranış bir hata olmasa da, bazen istenmeyen bir durum olabilir. Bir işlem yanıt vermiyor gibi görünüyorsa ve yeni sorgu işlenemiyorsa, ayrılmış yönetici bağlantısını (DAC) kullanarak SQL Server'a bağlanın ve işlemi sonlandırın. Bunu önlemek için en fazla çalışan iş parçacığı sayısını artırın.
İzinler
Üzerinde parametre olmadan veya yalnızca ilk parametreyle yürütme izinleri sp_configure varsayılan olarak tüm kullanıcılara verilir.
sp_configure'i her iki parametreyle yapılandırma seçeneğini değiştirmek veya RECONFIGURE deyimini çalıştırmak için yürütmek için, kullanıcıya sunucu düzeyinde ALTER SETTINGS izni verilmelidir. İzin ALTER SETTINGS , sysadmin ve serveradmin sabit sunucu rolleri tarafından örtük olarak tutulur.
SQL Server Management Studio'yu (SSMS) kullanma
Nesne Gezgini'nde bir sunucuya sağ tıklayın ve Özellikler'i seçin.
İşlemciler düğümünü seçin.
En fazla çalışan iş parçacığı kutusuna 128 ile 65.535 arasında bir değer yazın veya seçin.
Tavsiye
max worker threads SQL Server işlemleri için kullanılabilir çalışan iş parçacığı sayısını yapılandırmak için seçeneğini kullanın. için varsayılan ayar max worker threads çoğu sistem için en iyisidir. Ancak, sistem yapılandırmanıza bağlı olarak, daha küçük bir değere ayarlamak max worker threads bazen performansı artırır. Daha fazla bilgi için bu makaledeki Öneriler bölümüne bakın.
Transact-SQL kullanma
Veritabanı Altyapısı'na bağlanın.
Standart çubuğundan Yeni Sorgu'yi seçin.
Aşağıdaki örneği kopyalayıp sorgu penceresine yapıştırın ve Yürüt'e tıklayın. Bu örnek, bir seçeneği sp_configure ile
max worker threads900olarak yapılandırmayı gösterir.USE master; GO EXECUTE sp_configure 'show advanced options', 1; GO RECONFIGURE; GO EXECUTE sp_configure 'max worker threads', 900; GO RECONFIGURE; GO EXECUTE sp_configure 'show advanced options', 0; GO RECONFIGURE; GO
Değişiklik, RECONFIGURE yürütüldikten hemen sonra, Veritabanı Altyapısı'nın yeniden başlatılmasına gerek kalmadan geçerli olur.