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.
Şunlar için geçerlidir: SQL Server
SQL Server örneğinde veya belirli bir uygulamada sorgu çalıştırdığınızda, tüm sorgular yavaştır. Sorunu çözmek için şu adımları izleyin:
1. Adım: Uygulama sorunlarını giderme
Uygulama katmanını denetleyin. Uygulamadan bir sorgu alın, sql server örneğinde el ile çalıştırın ve nasıl çalıştığını görün. Çeşitli sorguları bu şekilde test edin. SQL Server örneğinde sorgular daha hızlıysa, sorun uygulama veya uygulama sunucularının katmanında olabilir.
Not
Veritabanı uygulaması ile SSMS arasındaki sorgu performansı farklılıklarına dikkat edin.
Uygulama farklı bir sunucuda çalışıyorsa, uygulama sunucusunun performansını denetleyin (bkz . 2. Adım: Sorun giderme için işletim sistemi sorunlarını giderme). Uygulamayla ilgili sorunları denetlemek için uygulama geliştirme ekibiyle etkileşime geçmeniz gerekebilir.
2. Adım: İşletim sistemi sorunlarını giderme
SQL Server'ın çalıştığı işletim sisteminin yavaş yanıt verilip veremediğini denetleyin. Örneğin, fare yavaş hareket eder, pencereler uzun süre yanıt vermez, sunucuya uzak masaüstü erişimi yavaştır veya sunucudaki bir paylaşıma bağlanmak yavaştır.
Bu sorun başka bir hizmet veya uygulamadan kaynaklanabilir. Sorun gidermek için Perfmon kullanın.
Diğer işletim sistemi performans sorunları için Windows Server performans sorunlarını giderme belgelerine bakın.
Sık karşılaşılan sorunlar şunlardır:
- Tüm CPU'larda yüksek CPU kullanımı
- Düşük fiziksel veya sanal bellek
- Yavaş G/Ç
- Güç planı yapılandırması CPU performansının altında performansa neden oluyor
Bu sorun, sistem üzerinde çalışan diğer uygulamalardan, işletim sisteminden veya sürücülerden kaynaklanabilir.
Bu sorunu gidermek için Görev Yöneticisi, Performans İzleyicisi veya Kaynak İzleyicisi'ni kullanarak bu sorunu belirleyin. Daha fazla bilgi için bkz . Yüksek CPU kullanımı sorun giderme kılavuzu.
3. Adım: Ağ sorunlarını giderme
Sorun ağ katmanında olabilir ve uygulama ile SQL Server arasında yavaş iletişime neden olabilir. Bu sorunu gidermek için aşağıdaki yöntemleri kullanın:
Bunun bir belirtisi SQL Server tarafında bekleme olabilir
ASYNC_NETWORK_IO
. Daha fazla bilgi için bkz . ASYNC_NETWORK_IO bekleme türünden kaynaklanan yavaş sorgularda sorun giderme.Ağ sorunlarını (güvenlik duvarı, yönlendirme vb.) denetlemek için ağ yöneticinizle birlikte çalışın.
Bir ağ izlemesi toplayın ve ağ sıfırlama ve yeniden iletim olaylarını denetleyin. Sorun giderme fikirleri için bkz . Aralıklı veya Düzenli Ağ Sorunu.
Ağ arabirimi düzeyinde (NIC) ağ performansını denetlemek için Perfmon sayaçlarını etkinleştirin. Atılan sıfır paket ve hata paketi olmalıdır. Ağ arabirimi bant genişliğini denetleyin:
- Ağ Arabirimi\Alınan Paketler Atıldı
- Ağ Arabirimi\Alınan Paket Hataları
- Ağ Arabirimi\Giden Paket Atıldı
- Ağ Arabirimi\Paket Giden Hataları
- Ağ Arabirimi\Toplam Bayt/Sn
- Ağ Arabirimi\Geçerli Bant Genişliği
4. Adım: SQL Server'da yüksek CPU kullanımı sorunlarını giderme
Yoğun CPU kullanan sorgular sistemde yürütülüyorsa, diğer sorguların CPU kapasitesinden etkilenmesine neden olabilir. Ancak daha sık sorgulardan gelen yüksek CPU kullanımı, sorguların iyileştirilmesi gerektiğinin bir göstergesi olabilir. Sorunu gidermek için şu adımları izleyin:
- İlk olarak, SQL Server'ın yüksek CPU kullanımına neden olup olmadığını öğrenin (Perfmon sayaçlarını kullanarak).
- CPU kullanımına katkıda bulunan sorguları belirleyin.
- İstatistikleri güncelleştirin.
- Eksik dizinleri ekleyin.
- Parametreye duyarlı sorgu sorunlarını araştırın ve çözün.
- SARGability sorunlarını araştırın ve çözün.
- Ağır izlemeyi devre dışı bırakın.
- Spinlock çekişmesi düzeltildi
SOS_CACHESTORE
. - Sanal makinenizi yapılandırın.
- Daha fazla CPU ekleyerek sistemin ölçeğini artırma.
Ayrıntılı sorun giderme adımları için bkz . SQL Server'da yüksek CPU kullanımı sorunlarını giderme.
5. Adım: SQL Server'da yavaşlığa neden olan aşırı G/Ç sorunlarını giderme
SQL Server iş yüklerinin genel yavaşlığının bir diğer yaygın nedeni G/Ç sorunlarıdır. G/Ç yavaşlığı sistemdeki sorguların çoğunu veya tümünü etkileyebilir. Sorunu gidermek için aşağıdaki yöntemleri kullanın:
Donanım sorunlarını denetleyin:
- SAN yanlış yapılandırması (anahtar, kablolar, HBA, depolama).
- G/Ç kapasitesi aşıldı (yalnızca arka uç depolama alanı değil, san ağının tamamında dengelenmemiştir, SAN'ı paylaşan tüm sunucuların G/Ç aktarım hızını denetleyin).
- Sürücüler veya üretici yazılımı sorunları veya güncelleştirmeleri.
G/Ç istekleriyle çok fazla G/Ç ve doygun disk birimine neden olan yetersiz SQL Server sorgularını denetleyin.
- Çok sayıda mantıksal okuma (veya yazma) işlemine neden olan sorguları bulun ve uygun dizinleri kullanan disk G/Ç'sini en aza indirmek için bu sorguları ayarlayın.
- Sorgu iyileştiricisine en iyi planı seçmek için yeterli bilgi sağladığından istatistikleri güncel tutun.
- Sorguların ve bazen tabloların yeniden tasarlanması, gelişmiş G/Ç konusunda yardımcı olabilir.
Filtre sürücüleri: Dosya sistemi filtre sürücüleri yoğun G/Ç trafiğini işlerse SQL Server G/Ç yanıtı ciddi şekilde etkilenebilir.
- Veri klasörlerini virüsten koruma taramasının dışında tutun ve G/Ç performansı üzerindeki etkiyi önlemek için yazılım satıcıları tarafından düzeltilen filtre sürücüsü sorunlarına sahip olun.
Diğer uygulamalar: SQL Server ile aynı makinedeki başka bir uygulama, G/Ç yolunu aşırı okuma veya yazma istekleriyle doyurabilir. Bu durum G/Ç alt sistemini kapasite sınırlarının ötesine itebilir ve SQL Server için G/Ç yavaşlığına neden olabilir. G/Ç yığını üzerindeki etkisini ortadan kaldırmak için uygulamayı belirleyin ve ayarlayın veya başka bir yere taşıyın. Bu sorun, diğer makinelerde çalışan ancak aynı SAN'yi bu SQL Server makinesiyle paylaşan uygulamalardan da kaynaklanabilir. G/Ç trafiğini dengelemek için SAN yöneticinizle birlikte çalışın (bkz . Donanım sorunlarını denetleme).
SQL Server ile ilgili G/Ç ile ilgili sorunların ayrıntılı sorunlarını gidermek için bkz . G/Ç sorunlarının neden olduğu yavaş SQL Server performansını giderme.
6. Adım: Bellek sorunlarını giderme
Sistemin genel veya SQL Server içindeki belleğin düşük olması, sorgular bellek verme () veya derleme belleği (RESOURCE_SEMAPHORE
RESOURCE_SEMAPHORE_QUERY_COMPILE
) beklerken yavaşlığa neden olabilir. Sorunu gidermek için aşağıdaki yöntemleri kullanın:
Perfmon sayaçlarını kullanarak işletim sistemi düzeyinde dış bellek olup olmadığını denetleyin:
- Memory\Available MBytes
- İşlem(*)\Çalışma Kümesi (tüm örnekler)
- İşlem(*)\Özel Baytlar (tüm örnekler)
İç bellek baskısı için SQL Server sorgularını kullanarak sys.dm_os_memory_clerks sorgular veya DBCC MEMORYSTATUS kullanın.
701 hataları için SQL Server hata günlüğünü denetleyin.
Ayrıntılı sorun giderme adımları için bkz . SQL Server'da yetersiz bellek veya yetersiz bellek sorunlarını giderme.
7. Adım: Engelleme sorunlarını giderme
Kilit alma, bir veritabanı sistemindeki kaynakları korumak için kullanılır. Kilitler uzun süre alınırsa ve diğer oturumlar bu kilitleri beklerse engelleme senaryosuyla karşı karşıyasınız demektir.
Sql Server gibi veritabanı sistemlerinde her zaman kısa engelleme gerçekleşir. Ancak, özellikle çoğu veya tüm sorgular kilit beklediğinde uzun süreli engelleme, sunucunun tamamının yanıt vermediği algılanmasıyla sonuçlanabilir.
Sorunu gidermek için aşağıdaki adımları kullanın:
sys.dm_exec_requests DMV çıkışındaki sütuna
blocking_session_id
veya saklı yordam çıkışındakisp_who2
sütunaBlkBy
bakarak baş engelleme oturumunu tanımlayın.Baş engelleme zincirinin yürüttüğü sorguları bulun (uzun bir süre boyunca kilitleri tutan şey).
Baş engelleme oturumunda etkin bir şekilde çalıştırılan sorgu yoksa, uygulama sorunları nedeniyle yalnız bırakılmış bir işlem olmuş olabilir.
Kafa engelleme sorgusunu daha hızlı çalışacak şekilde yeniden tasarlayın veya ayarlayın ya da bir işlem içindeki sorgu sayısını azaltın.
Sorguda kullanılan işlem yalıtımını inceleyin ve ayarlayın.
Engelleme senaryolarıyla ilgili ayrıntılı sorun giderme işlemleri için bkz . SQL Server engelleme sorunlarını anlama ve çözme.
8. Adım: Zamanlayıcı sorunlarını giderme (verimsiz, kilitlenmemiş zamanlayıcı, verimsiz IOCP dinleyicisi, kaynak izleyicisi)
SQL Server, iş parçacıklarını CPU'da zamanlamak üzere işletim sistemine göstermek için işbirliğine dayalı bir zamanlama mekanizması (Scheduler) kullanır. SQL zamanlayıcılarıyla ilgili sorunlar varsa, SQL Server iş parçacıkları sorguları, oturum açmaları, oturum kapatmaları vb. işlemeyi durdurabilir. Sonuç olarak, ETKILENEN zamanlayıcı sayısına bağlı olarak SQL Server kısmen veya tamamen yanıt vermiyor gibi görünebilir. Zamanlayıcı sorunları ürün hataları, dış ve filtre sürücüleri ve donanım sorunları gibi çok çeşitli sorunlardan kaynaklanabilir.
Bu sorunları gidermek için şu adımları izleyin:
SQL Server Hata günlüğünüzde, SQL Server'dan yanıt alınamaması bildirildiği sırada aşağıdaki gibi hatalar olup olmadığını denetleyin:
-
*********************************************** * * BEGIN STACK DUMP: * 03/10/22 21:16:35 spid 22548 * * Non-yielding Scheduler * ***********************************************
-
********************************************** * * BEGIN STACK DUMP: * 03/25/22 08:50:29 spid 355 * * Deadlocked Schedulers * * ********************************************
-
* ******************************************************************************* * * BEGIN STACK DUMP: * 09/07/22 23:01:04 spid 0 * * Non-yielding IOCP Listener * * *******************************************************************************
-
* ******************************************** * * BEGIN STACK DUMP: * 07/25/22 11:44:21 spid 2013 * * Non-yielding Resource Monitor * * ********************************************
-
Bu hatalardan birini bulursanız sql server'ın hangi sürümünü toplu güncelleştirme (CU) kullandığınızı belirleyin. Geçerli CU'nuzdan sonra gönderilen RU'larda herhangi bir sorun olup olmadığını denetleyin. SQL Server düzeltmeleri için bkz . SQL Server'ın şu anda desteklenen sürümleri için kullanılabilen en son güncelleştirmeler. Ayrıntılı bir düzeltme listesi için bu Excel dosyasını indirebilirsiniz.
Daha fazla fikir için SQL Server Zamanlama ve Verim Sorunlarını Giderme'yi kullanın.
Kilitlenme zamanlayıcılarına yol açabilecek ağır engelleme senaryolarını veya büyük paralellik sorgularını denetleyin. Ayrıntılı bilgi için bkz . Kilitlenmeye Neden Olan Zamanlayıcının Tao'sunu.
Verimsiz bir IOCP dinleyicisi için, sisteminizin belleğinin az olup olmadığını ve SQL Server'ın disk belleğine alınıp alınmadığını denetleyin. Bir diğer neden de virüsten koruma veya izinsiz girişi önleme yazılımının G/Ç API çağrılarını durdurması ve iş parçacığı etkinliğini yavaşlatması olabilir. Daha fazla bilgi için bkz . IOCP dinleyicisi gerçekten dinliyor mu? ve Belirli modüller veya filtre sürücüleri yüklendiğinde performans ve tutarlılık sorunları.
Kaynak İzleyicisi sorunları için bazı durumlarda bu sorunla ilgilenmeniz gerekmeyebilir. Daha fazla bilgi için bkz . Kaynak İzleyicisi SQL Server çalıştıran bir sunucuda verimsiz bir koşul girer.
Bu kaynaklar yardımcı olmazsa, \LOG alt dizininde oluşturulan bellek dökümünü bulun ve analiz için bellek dökümünü karşıya yükleyerek Microsoft CSS ile bir destek bileti açın.
9. Adım: Yoğun kaynak gerektiren Profil Oluşturucu veya XEvent İzlemeleri'ne bakın
Özellikle metin sütunlarında filtrelemesi olan (veritabanı adı, oturum açma adı, sorgu metni vb.) etkin Genişletilmiş Olayları veya SQL Server Profil Oluşturucu izlemelerini arayın. Mümkünse izlemeleri devre dışı bırakın ve sorgu performansının iyileşip iyileşmediğini görün. Seçilen olaya bağlı olarak, her iş parçacığı genel yavaşlığa neden olan ek CPU tüketebilir. Genişletilmiş Olaylar için etkin izlemeleri tanımlamak için bkz . sys.dm_xe_sessions ve Profil Oluşturucu izlemeleri için bkz . sys.traces.
SELECT * FROM sys.dm_xe_sessions
GO
SELECT * FROM sys.traces