Performansı izleme ve sorunlarını giderme
İ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_xml
sorgulamasys.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_stats
dahil 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_stats
benzerdir, 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_file
gö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_file
gö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.
Ş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_governance
dö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ü olanSOS_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ı beklerPOOL_LOG_RATE_GOVERNOR
: Elastik Havuzları beklerINSTANCE_LOG_GOVERNOR
: Azure SQL Yönetilen Örneği beklerHADR_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ır
max 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.