SQL Server’da Yavaş Çalışan Sorguların Nedenleri Nasıl Belirlenir?

Arslan GÜRALSQL Server12 months ago323 Views


SQL Server’da Yavaş Çalışan Sorguların Nedenleri Nasıl Belirlenir?

SQL Server’da performans sorunları, özellikle yavaş çalışan sorgular, sistemde ciddi darboğazlara neden olabilir. Bu makalede, SQL Server’da yavaş çalışan sorguların nedenlerini belirlemek ve performans iyileştirmeleri yapmak için kullanılabilecek yöntemleri inceleyeceğiz.

1. Execution Plan (Çalıştırma Planı) Analizi

SQL Server, her sorgu için bir çalıştırma planı oluşturur. Bu planlar, sorgunun nasıl çalıştırıldığını, hangi adımların atıldığını ve en çok zaman harcanan yerleri gösterir. Yavaş çalışan sorguların nedenini anlamak için bu planları analiz etmek kritik bir adımdır.

Nasıl İncelenir?

  • SQL Server Management Studio’da (SSMS) sorguyu çalıştırmadan önce “Include Actual Execution Plan” seçeneğini aktif hale getirin.
  • Sorgu çalıştırıldıktan sonra, planı inceleyin. “Table Scan” ya da “Index Scan” gibi pahalı işlemler yavaşlamaya neden olabilir.

2. SQL Server Profiler ve Extended Events Kullanımı

SQL Server Profiler ve Extended Events, sorguların performansını izlemek ve analiz etmek için kullanılabilir. Bu araçlar, sorgu izleme ve performans düşüşlerine neden olan işlemleri tespit etmede yardımcı olur.

SQL Server Profiler Nasıl Kullanılır?

SQL Profiler, belirli olayları (örneğin, RPC:Completed veya SQL:BatchCompleted) izleyerek, yavaşlayan sorguları ve sistemdeki yükü belirlemenizi sağlar.

Extended Events Nedir?

SQL Server’da Profiler’ın daha az kaynak tüketen bir alternatifi olarak Extended Events kullanılabilir. Bu yöntem, sorgu performansını daha hafif bir izleme aracıyla analiz etmenize yardımcı olur.

3. Dynamic Management Views (DMV) ile Sorgu Performansını İzleme

SQL Server, çeşitli Dynamic Management Views (DMV) aracılığıyla sorgu performansı hakkında bilgi sağlar. Bu görünümler, sistemdeki yavaş sorguları belirlemek için kullanılabilir.

Örneğin, aşağıdaki sorgu yavaş çalışan sorguları listeler:

SELECT TOP 10
    qs.sql_handle,
    qs.execution_count,
    qs.total_elapsed_time,
    qs.total_worker_time
FROM sys.dm_exec_query_stats qs
ORDER BY qs.total_elapsed_time DESC;

Bu sorgu, en çok zaman alan sorguları bulmanıza yardımcı olur.

4. Eksik İndekslerin Belirlenmesi

SQL Server, çalıştırılan sorgular sırasında bazı durumlarda eksik indekslerle karşılaşabilir. Bu eksiklikler sorgu performansını doğrudan etkileyebilir.

Eksik İndeksleri Görüntüleme:

Eksik indeksleri tespit etmek için aşağıdaki sorguyu kullanabilirsiniz:

SELECT
    migs.group_handle,
    migs.unique_compiles,
    mid.equality_columns,
    mid.inequality_columns,
    mid.included_columns
FROM sys.dm_db_missing_index_group_stats migs
JOIN sys.dm_db_missing_index_details mid 
    ON migs.group_handle = mid.index_group_handle
ORDER BY migs.unique_compiles DESC;

5. İndeks Parçalanması (Fragmentation) Kontrolü

Zamanla indeksler, veri ekleme ve güncellemeler nedeniyle parçalanabilir ve bu da sorgu performansını yavaşlatabilir. Parçalanmayı gidermek için indeksleri düzenli olarak yeniden yapılandırmak gerekir.

Parçalanmayı Kontrol Etme:

İndekslerdeki parçalanmayı kontrol etmek için şu sorguyu kullanabilirsiniz:

SELECT 
    dbtables.name AS 'Table',
    dbindexes.name AS 'Index',
    indexstats.avg_fragmentation_in_percent
FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'DETAILED') AS indexstats
JOIN sys.indexes AS dbindexes 
    ON indexstats.object_id = dbindexes.object_id
    AND indexstats.index_id = dbindexes.index_id
WHERE indexstats.avg_fragmentation_in_percent > 10;

6. Statistiklerin Güncellenmesi

SQL Server, sorguların optimal şekilde çalıştırılmasını sağlamak için tablo ve indekslerdeki istatistikleri kullanır. Ancak istatistiklerin güncel olmaması, sorgu performansını olumsuz etkileyebilir.

İstatistikleri Güncelleme:

İstatistiklerin güncel olduğundan emin olmak için şu komutla tabloya ait istatistikleri güncelleyebilirsiniz:

UPDATE STATISTICS [table_name];

7. Query Tuning Advisor Kullanımı

Query Tuning Advisor, SQL Server’da sorguların optimize edilmesine yardımcı olan bir araçtır. Bu araç, indeks önerileri sunabilir ve sorgu planlarını iyileştirebilir.

SSMS üzerinde bir sorguyu çalıştırdıktan sonra Database Engine Tuning Advisor’ı kullanarak bu önerilere ulaşabilirsiniz.

8. TempDB Kullanımı ve Boyutu Kontrolü

SQL Server’ın geçici işlemleri için kullandığı TempDB veritabanı, aşırı kullanımda sorgu performansını yavaşlatabilir. TempDB’nin boyutunu ve kullanımını düzenli olarak kontrol ederek, sorunların önüne geçebilirsiniz.

9. Kilitlenme ve Engelleme (Locking and Blocking) Durumlarını İzleme

SQL Server’da yavaş sorguların nedeni bazen kilitlenme veya engelleme sorunları olabilir. Kilitlenen sorgular, diğer işlemlerin ilerlemesini yavaşlatabilir.

Kilitlenmeleri İzleme:

Kilitlenmeleri tespit etmek için şu sorguyu kullanabilirsiniz:

SELECT 
    blocking_session_id AS BlockingSession,
    session_id AS WaitingSession,
    wait_type,
    wait_time,
    wait_resource
FROM sys.dm_exec_requests
WHERE blocking_session_id <> 0;

Sonuç olarak, SQL Server’da yavaş çalışan sorguların performansını iyileştirmek için yukarıdaki yöntemleri kullanabilirsiniz. Execution planları analiz etmek, eksik indeksleri belirlemek, istatistikleri güncellemek ve kilitlenmeleri izlemek performansı artırmada etkili adımlardır. Her bir yöntemin doğru kullanımı, veri tabanı sisteminizin verimli çalışmasını sağlayacaktır.


Bu makale SQL Server’daki yavaş sorguların nedenlerini anlamaya yardımcı olacak genel yöntemleri kapsamaktadır. Sorunlarınızın karmaşıklığına göre ek analiz yöntemlerine de başvurmanız gerekebilir.

0 Votes: 0 Upvotes, 0 Downvotes (0 Points)

Leave a reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Bize Katılın
  • Facebook38.5K
  • X Network32.1K
  • Behance56.2K
  • Instagram18.9K

En Son ve En Önemli Haberlerden Haberdar Olun

I consent to receive newsletter via email. For further information, please review our Privacy Policy

Kategoriler

Reklam

Loading Next Post...
Takip et
Search Trending
Popüler
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...