Performansı izleme ve sorunlarını giderme

Tamamlandı

İzleme ve sorun giderme işlemleri tutarlı bir performans sunmanın kilit öğeleridir. Azure SQL’de, SQL Server’daki performansı izleme ve sorunlarını giderme araçlarıyla özelliklerinin aynıları ve bazı ek özellikler bulunur. Buna dinamik yönetim görünümleri (DMV), genişletilmiş olaylar ve Azure İzleyici gibi özellikler dahildir. Bu araçlarla özelliklerin Azure SQL için çeşitli performans senaryoları kapsamında nasıl kullanılacağını öğrenmek de önemlidir. Bu senaryolar yüksek CPU kullanımını veya bir kaynağı beklemeyi içerir.

Performans izlemeye yönelik araçlar ve özellikler

Azure SQL, Azure SQL ile gelen tanıdık araçlara ek olarak Azure ekosistemindeki izleme ve sorun giderme özelliklerini de sağlar. Aşağıdaki bölümlerde bunlar kısaca açıklanmaktadır.

Azure İzleyici

Azure İzleyici, Azure ekosisteminin bir parçasıdır ve Azure SQL, Azure ölçümleri, uyarıları ve günlüklerini desteklemek için tümleştirilmiştir. Azure İzleyici verilerini Azure portalında görselleştirebilirsiniz ve uygulamalar bu verilere Azure Event Hubs veya API'ler aracılığıyla erişebilir. Windows Performans İzleyicisi gibi Azure İzleyici de SQL Server araçlarını kullanmadan Azure SQL için kaynak kullanım ölçümlerine erişmenize yardımcı olur.

Dinamik yönetim görünümleri (DMV)

Azure SQL, SQL Server ile neredeyse aynı DMV altyapısını sağlar ve birkaç farklılık gösterir. Standart T-SQL sorgularını kullanarak önemli SQL Server performans verilerini görüntüleyebileceğiniz için DMV’ler performans izlemenin önemli bir yönüdür. Örneğin, etkin sorgular, kaynak kullanımı, sorgu planları ve kaynak bekleme türleri gibi bilgileri görüntüleyebilirsiniz. Bu ünitenin devamında Azure SQL ile DMV'ler hakkında daha fazla bilgi edineceksiniz.

Genişletilmiş olaylar

Azure SQL, SQL Server ile neredeyse aynı genişletilmiş olay altyapısını sağlar ve birkaç fark vardır. Genişletilmiş olaylar, Azure SQL’i destekleyen SQL Server’ın içindeki önemli yürütme olaylarını izlemenize olanak sağlar. Performans için, genişletilmiş olaylar tek tek sorguların yürütülmesini izlemenize olanak tanır. Bu ünitenin devamında Azure SQL ile genişletilmiş olaylar hakkında daha fazla bilgi edineceksiniz.

Basit sorgu profili oluşturma

Basit profil oluşturma, uçuş içi istekler ve yüksek değerli sorgular için gerçek yürütme planının alınmasını gerektiren senaryolarda sorun gidermeye yönelik gelişmiş bir yöntemdir. Düşük yükü nedeniyle, henüz CPU sınırı olmayan herhangi bir sunucu sürekli olarak basit profil oluşturma çalıştırabilir ve veritabanı uzmanlarının herhangi bir zamanda çalışan herhangi bir yürütmeye bağlanmasına izin verebilir; örneğin, SQL Server Management Studio'da (SSMS) Etkinlik İzleyicisi'ni kullanma veya doğrudan veya sys.dm_exec_query_statistics_xmlsorgulamasys.dm_exec_query_profiles.

Basit sorgu profili oluşturma özelliğini kullanarak etkin bir sorgunun sorgu planını ve çalışma durumunu inceleyebilirsiniz. Deyimler çalışırken sorgu performansının hatalarını ayıklamaya yönelik önemli bir özelliktir. Bu özellik, sorgu performansını izlemek için genişletilmiş olaylar gibi araçları kullanmayla karşılaştırıldığında, performans sorunlarını çözme sürenizi kısaltır. DMV'ler aracılığıyla basit sorgu profili oluşturma işlemine erişebilirsiniz ve SQL Server 2019 ve sonraki sürümlerde olduğu gibi Azure SQL için varsayılan olarak açıktır.

Sorgu planı hata ayıklama özellikleri

Bazı durumlarda tek bir T-SQL deyimi için sorgu performansının ayrıntılara ihtiyacınız olabilir. SHOWPLAN ve STATISTICS gibi T-SQL SET deyimleri bu ayrıntıları sağlayabilir ve SQL Server'da olduğu gibi Azure SQL'de de tam olarak desteklenir.

Sorgu Deposu

Sorgu Deposu kullanıcı veritabanında depolanan sorgular için yürütme performansının geçmiş kaydıdır. Sorgu Deposu, Azure SQL’de varsayılan olarak açıktır ve otomatik plan düzeltmesi ve otomatik ayarlama gibi özellikleri sağlamak için kullanılır. SQL Server Management Studio (SSMS) depo raporları, Azure SQL ile kullanılabilir. Bu raporlar, sorgu planı farklılıkları ve kaynak bekleme senaryolarına bakmak için en uzun bekleme türleri gibi en fazla kaynak kullanan sorguları bulmak için kullanılır.

Performans görselleştirmeleri

Azure SQL Veritabanı için, Sorgu Deposu performans bilgilerini, görselleştirmeler aracılığıyla Azure portalda tümleşik şekilde görebilirsiniz. Bu şekilde, Sorgu Deposu için SSMS gibi bir istemci aracıyla yaptığınız bilgilerin bazılarını görebilirsiniz. Azure portalında Performansa Genel Bakış ve Sorgu Performansı İçgörüleri seçeneklerini kullanın.

DMV ayrıntıları

DMV’ler yıllardır SQL Server’da performansı izleme ve sorunlarını giderme işlemlerinin itici gücüydü. SQL Server’ın sık kullanılan DMV’leri, Azure SQL'de de kullanılabilir ve ayrıca Azure'a özgü bazı görünümler eklenmiştir.

Azure SQL Yönetilen Örnek

SQL Server için kullanılabilen tüm DMV’ler, SQL Yönetilen Örneği için de kullanılabilir. ve sys.dm_os_wait_stats gibi sys.dm_exec_requests önemli DMV'ler genellikle sorgu performansını incelemek için kullanılır.

Sistem sys.server_resource_stats görünümü Azure SQL Yönetilen Örneği özgüdür ve geçmiş kaynak kullanımını gösterir. Bu, Performans İzleyicisi gibi işletim sistemi araçlarına doğrudan erişiminiz olmadığından kaynak kullanımını görmek için değerli bir araçtır.

Azure SQL Veritabanı

ve sys.dm_os_wait_statsdahil olmak üzere sys.dm_exec_requests performans için ihtiyacınız olan yaygın DMV'lerin çoğu kullanılabilir. Bu DMV, mantıksal sunucunun tüm veritabanlarına ilişkin bilgileri değil, yalnızca veritabanına özgü bilgileri sağlar.

sys.dm_db_resource_stats DMV Azure SQL Veritabanı özgüdür ve veritabanının kaynak kullanımı geçmişini görüntülemek için bunu kullanabilirsiniz. Bu DMV’yi, yönetilen örnekte sys.server_resource_stats kullanımınıza benzer şekilde kullanın.

sys.elastic_pool_resource_stats DMV, ile sys.dm_db_resource_statsbenzerdir, ancak elastik havuz veritabanlarının kaynak kullanımını görüntülemek için bunu kullanabilirsiniz.

İhtiyaç duyduğunuz DMV’ler

Azure SQL’e yönelik belirli performans senaryolarını çözümlemek için aşağıdaki DMV’ler gerekir:

  • Dosya başına G/Ç performansı için işletim sistemi ölçümlerine doğrudan erişiminiz olmadığından, sys.dm_io_virtual_file_stats önemlidir.
  • sys.dm_os_performance_counters, SQL Server ortak performans ölçümlerini görmek için hem Azure SQL Veritabanı’nda hem de SQL Yönetilen Örneği’nde kullanıma sunulur. Genellikle Performans İzleyicisi'de kullanılabilen SQL Server performans sayacı bilgilerini görüntülemek için bu DMV'yi kullanın.
  • sys.dm_instance_resource_governance, yönetilen örneğin kaynak sınırlarını görüntülemenize olanak sağlar. Bu bilgileri görüntüleyerek, Azure portalı kullanmadan beklenen kaynak sınırlarınızın nasıl olması gerektiğini görebilirsiniz.
  • sys.dm_user_db_resource_governance, Azure SQL Veritabanı dağıtımınızda her dağıtım seçeneği, hizmet katmanı ve boyutun ortak kaynak sınırlarını görmenize olanak sağlar. Bu bilgileri görüntüleyerek, Azure portalı kullanmadan beklenen kaynak sınırlarınızın nasıl olması gerektiğini görebilirsiniz.

Daha ayrıntılı içgörüler için DMV'ler

Bu DMV'ler Azure SQL için kaynak sınırları ve kaynak idaresiyle ilgili daha derin içgörüler sağlar. Bunlar yaygın senaryolarda kullanıma yönelik değildir, ancak karmaşık performans sorunlarına daha yakından bakarken yararlı olabilir. Bu DMV'lerle ilgili tüm ayrıntılar için belgelere bakın:

  • sys.dm_user_db_resource_governance_internal (yalnızca SQL Yönetilen Örneği)
  • sys.dm_resource_governor_resource_pools_history_ex
  • sys.dm_resource_governor_workload_groups_history_ex

Genişletilmiş olayların ayrıntıları

Genişletilmiş olaylar özelliği, SQL Server’ın izleme mekanizmasıdır. Azure SQL için genişletilmiş olaylar SQL Server altyapısını temel alır ve bu nedenle azure SQL için neredeyse aynıdır ve birkaç önemli fark vardır. Sonraki bölümlerde bu farklılıklar ele alınmaktadır.

Azure SQL Veritabanı için genişletilmiş olaylar

Oturumlar oluşturup olayları, eylemleri ve hedefleri kullanarak sql server gibi Azure SQL Veritabanı için genişletilmiş olayları kullanabilirsiniz. Genişletilmiş olay oturumları oluştururken şu önemli noktaları aklınızda bulundurun:

  • En yaygın kullanılan olaylar ve eylemler desteklenir.
  • Dosya, ring_buffer ve sayaç hedefleri desteklenir.
  • Temel işletim sistemi disklerine erişiminiz olmadığından dosya hedefleri, Azure Blob depolama ile desteklenir.

Oturumları oluşturmak ve başlatmak için SSMS veya T-SQL kullanabilirsiniz. Genişletilmiş olay oturumu hedef verilerini veya sistem işlevini sys.fn_xe_file_target_read_filegörüntülemek için SSMS kullanabilirsiniz.

Dekont

Azure SQL Veritabanı etkin verilerini görüntülemek için SSMS kullanmak mümkün değildir.

Oturumlarınız için tetiklenen tüm genişletilmiş olayların yalnızca veritabanınıza özgü olduğunu, mantıksal sunucunun geneli için geçerli olmadığını bilmeniz önemlidir.

Azure SQL Yönetilen Örneği için genişletilmiş olaylar

Tıpkı SQL Server’a benzer şekilde, oturumlar oluşturarak ve olaylar, eylemler ve hedefler kullanarak Azure SQL Yönetilen Örneği için genişletilmiş olayları kullanabilirsiniz. Genişletilmiş olay oturumları oluştururken şu önemli noktaları aklınızda bulundurun:

  • Tüm olaylar, hedefler ve eylemler desteklenir.
  • Temel işletim sistemi disklerine erişiminiz olmadığından dosya hedefleri, Azure Blob depolama ile desteklenir.
  • Örneğin yönetimi ve yürütülmesine özgü olayları izlemek için SQL Yönetilen Örneğine bazı özel olaylar eklenmiştir.

Oturumları oluşturmak ve başlatmak için SSMS veya T-SQL kullanabilirsiniz. Genişletilmiş olay oturumu hedef verilerini veya sistem işlevini sys.fn_xe_file_target_read_filegörüntülemek için SSMS kullanabilirsiniz. SSMS'nin canlı verileri görüntüleme özelliği SQL Server ve Azure SQL Yönetilen Örneği için desteklenir.

Azure SQL için performans senaryoları

Performans izleme ve sorun giderme araçlarını ve özelliklerini nasıl uygulayacağınıza karar vermek için Azure SQL performansına senaryolar üzerinden bakmak önemlidir.

Yaygın performans senaryoları

SQL Server performans sorunlarını gidermeye yönelik yaygın bir teknik, bir performans sorununun Çalışıyor (yüksek CPU) veya Bekleme (kaynak beklerken) olup olmadığını incelemektir. Aşağıdaki diyagramda SQL Server performans sorununun çalışma sorunu mu yoksa bekleme sorunu mu olduğunu belirleyen bir karar ağacı ve sorunun nedeniyle çözümünü belirlemeye yönelik performans araçlarının nasıl kullanacağı gösterilir.

Diagram of running versus waiting.

Şimdi diyagramın her yönünü ayrıntılarıyla gözden geçirelim.

Çalışma ve bekleme

Öncelikle genel kaynak kullanımına bakın. Standart bir SQL Server dağıtımı için Windows'ta Performans İzleyicisi veya Linux'ta üst gibi araçları kullanabilirsiniz. Azure SQL için aşağıdaki yöntemleri kullanabilirsiniz:

  • Azure portal/PowerShell/uyarılar

    Azure İzleyici'nin Azure SQL kaynak kullanımını izlemek için tümleşik ölçümleri vardır. Kaynak kullanımı koşullarını bulmak için uyarıları da ayarlayabilirsiniz.

  • sys.dm_db_resource_stats

    Azure SQL Veritabanı için, bu DVM’ye bakarak veritabanı dağıtımının CPU, bellek ve G/Ç kaynağı kullanımını görebilirsiniz. Bu DVM 15 saniyede bir verilerin anlık görüntüsünü alır.

  • sys.server_resource_stats

    Bu DMV, sys.dm_db_resource_stats gibi davranır, ancak SQL Yönetilen Örneğinin CPU, bellek ve G/Ç kaynak kullanımını görmek için kullanılır. Bu DVM de 15 saniyede bir anlık görüntü alır.

  • sys.dm_user_db_resource_governance

    Azure SQL Veritabanı için bu DMV, geçerli veritabanında veya elastik havuzda kaynak idare mekanizmaları tarafından kullanılan gerçek yapılandırma ve kapasite ayarlarını döndürür.

  • sys.dm_instance_resource_governance

    Azure SQL Yönetilen Örneği için bu DMV, geçerli SQL Yönetilen Örneği ile benzer bilgiler sys.dm_user_db_resource_governancedöndürür.

Çalışıyor

Sorunun yüksek CPU kullanımı olduğunu belirlediyseniz, bu çalışma senaryosu olarak adlandırılır. Çalışma senaryoları derleme veya yürütme işlemleri aracılığıyla kaynak tüketen sorgular içerebilir. Daha ayrıntılı analiz için aşağıdaki araçları kullanın:

  • Sorgu Deposu

    Hangi sorguların en fazla CPU kaynağı tükettiğini bulmak için SSMS'de En Fazla Tüketilen Kaynak raporlarını, Sorgu Deposu katalog görünümlerini veya Azure portalda Sorgu Performansı İçgörüleri'ni kullanabilirsiniz.

  • sys.dm_exec_requests

    Etkin sorguların durumunun anlık görüntüsünü almak için Azure SQL’de bu DVM’yi kullanın. Yeterli CPU kapasiteniz olup olmadığını görmek için durumu RUNNABLE ve bekleme türü olan SOS_SCHEDULER_YIELD sorguları arayın.

  • sys.dm_exec_query_stats

    Bu DMV, en çok kaynak tüketen sorguları bulmak için Sorgu Deposuna çok benzer şekilde kullanılabilir. Bunun yalnızca önbelleğe alınan sorgu planları için kullanılabildiğini, ancak Sorgu Deposu’nun kalıcı bir performans geçmişi kaydı sağladığını unutmayın. Bu DMV, önbelleğe alınmış bir sorgunun sorgu planını bulmanıza da olanak tanır.

  • sys.dm_exec_procedure_stats

    Bu DMV, sys.dm_exec_query_stats DMV’sine çok benzer bilgiler sağlar. Tek farkı, performans bilgilerinin saklı yordam düzeyinde görüntülenebilmesidir.

    Hangi sorgu veya sorguların en fazla kaynak tükettiğini belirledikten sonra, iş yükünüz için yeterli CPU kaynağına sahip olup olmadığınızı incelemeniz gerekebilir. Basit sorgu profili oluşturma, SET deyimleri, Sorgu Deposu veya genişletilmiş olay izlemesi gibi araçlarla sorgu planlarının hatasını ayıklayabilirsiniz.

Bekleniyor

Sorununuzun sebebi yüksek CPU kaynak kullanımı değilse, bir kaynağı beklemekten kaynaklanan bir performans sorunu olabilir. Kaynakları beklemeyi içeren senaryolar şunlardır:

  • G/Ç bekleme süreleri
  • Kilit bekleme süreleri
  • Mandal bekleme süreleri
  • Arabellek havuzu sınırları
  • Bellek atamaları
  • Plan önbelleği çıkarma

Bekleme senaryoları üzerinde analiz gerçekleştirmek için genellikle aşağıdaki araçlara bakarsınız:

  • sys.dm_os_wait_stats

    Veritabanı veya örnekte ilk sıradaki bekleme türlerini görmek için bu DMV’yi kullanın. Bu DMV, ilk sıradaki bekleme türlerine bağlı olarak sonraki eylemin ne olacağını saptarken size yol gösterebilir.

  • sys.dm_exec_requests

    Etkin sorguların hangi kaynağı beklediklerini görmesi için belirli bekleme türlerini bulmak için bu DMV'yi kullanın. Bu, diğer kullanıcıların kilitlerini beklemeye içerek standart bir engelleme senaryosu olabilir.

  • sys.dm_os_waiting_tasks

    Şu anda yürütülen belirli bir sorgu için belirli bir görevin bekleme türlerini bulmak için bu DMV'yi kullanabilirsiniz. Belki de normalden uzun sürme nedenini görebilirsiniz. sys.dm_os_waiting_tasks zaman içinde toplanan sys.dm_os_wait_stats canlı bekleme istatistiklerini içerir.

  • Sorgu Deposu

    Sorgu Deposu, sorgu planı yürütme işleminde ilk sıradaki beklemelerinin toplamını gösteren raporlar ve katalog görünümleri sağlar. CPU için beklemenin bir çalışma sorununa eşdeğer olduğunu bilmeniz önemlidir.

Bahşiş

Çalışan veya bekleyen senaryolar için genişletilmiş olayları kullanabilirsiniz. Bunu yapmak için, genişletilmiş olaylar oturumunu ayarlayarak sorguları izlemeniz gerekir. Bir performans sorununun hatalarını ayıklamak için bu yöntem daha gelişmiştir ve DMV'lerden daha fazla performans yükü karşılığında çok fazla bilgi döndürebilir.

Azure SQL’e özgü senaryolar

Hem çalışan hem de bekleyen, Azure SQL’e özgü bazı performans senaryoları vardır. Günlük idaresi, çalışan sınırları, İş Açısından Kritik hizmet katmanları için karşılaşılan bekleme süreleri ve Hiper Ölçek dağıtımına özgü bekleme süreleri bunlardan bazılarıdır.

Günlük idaresi

Azure SQL, işlem günlüğü kullanımında kaynak sınırlarını zorunlu tutmak için günlük hızı idaresini kullanabilir. Kaynak sınırlarını güvence altına almak ve taahhüt edilen SLA’yı sağlamak için bu zorlama gerekebilir. Günlük idaresi, aşağıdaki bekleme türlerinden görünebilir:

  • LOG_RATE_GOVERNOR: Azure SQL Veritabanı bekler
  • POOL_LOG_RATE_GOVERNOR: Elastik Havuzları bekler
  • INSTANCE_LOG_GOVERNOR: Azure SQL Yönetilen Örneği bekler
  • HADR_THROTTLE_LOG_RATE*: İş Açısından Kritik ve coğrafi çoğaltma gecikme süresini bekler

Çalışan sınırları

SQL Server çalışan iş parçacığı havuzunu kullanır ama çalışanların sayısıyla ilgili üst sınırları vardır. Çok sayıda eşzamanlı kullanıcıya sahip uygulamalar, Azure SQL Veritabanı ve SQL Yönetilen Örneği için zorunlu kılınan çalışan sınırlarına yaklaşabilir:

  • Azure SQL Veritabanı'nın hizmet katmanına ve boyuta bağlı sınırları vardır. Bu sınırı aşarsanız yeni sorgu hata alır.
  • Şu anda SQL Yönetilen Örneği kullanırmax worker threads, bu nedenle bu sınırı aşan çalışanlar beklemeleri görebilirTHREADPOOL.

İş Açısından Kritik HADR beklemeleri

İş Açısından Kritik hizmet katmanını kullanıyorsanız beklenmedik bir şekilde aşağıdaki bekleme türlerini görebilirsiniz:

  • HADR_SYNC_COMMIT
  • HADR_DATABASE_FLOW_CONTROL
  • HADR_THROTTLE_LOG_RATE_SEND_RECV

Bu bekleme süreleri, uygulamanızı yavaşlatmasa da, bunları görmeyi beklemeyebilirsiniz. Bunlar normalde Her Zaman Açık kullanılabilirlik grubu kullanımına özgüdür. İş Açısından Kritik katmanlar, bir İş Açısından Kritik hizmet katmanının SLA ve kullanılabilirlik özelliklerini uygulamak için kullanılabilirlik grubu teknolojisini kullanır. Bu nedenle bu bekleme türleri beklenir. Uzun bekleme sürelerinin, G/Ç gecikme süresi veya arkasında çoğaltma gibi bir performans sorunu olduğunu belirtebileceğini unutmayın.

Hiper Ölçek

Hiper Ölçek mimarisi RBIO ön ekiyle belirtilen (günlük idaresinin olası bir göstergesi) bazı benzersiz bekleme türlerine yol açabilir. Buna ek olarak DMV’ler, katalog görünümleri ve genişletilmiş olaylar, sayfa sunucusu okumalarının ölçümlerini gösterecek şekilde iyileştirilmiştir.

Sonraki alıştırmada, bu ünitede edindiğiniz araçları ve bilgileri kullanarak Azure SQL için performans sorununu izlemeyi ve çözmeyi öğreneceksiniz.