Akıllı İçgörüler - Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği ile ilgili performans sorunlarını giderme
Şunlar için geçerlidir: Azure SQL Veritabanı Azure SQL Yönetilen Örneği
Bu sayfa, Intelligent Insights kaynak günlüğü aracılığıyla algılanan Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği performans sorunları hakkında bilgi sağlar. Ölçümler ve kaynak günlükleri Azure İzleyici günlüklerine, Azure Event Hubs'a, Azure Depolama'ya veya özel DevOps uyarı ve raporlama özellikleri için üçüncü taraf bir çözüme akışla aktarılabilir.
Not
Intelligent Insights'ı kullanarak hızlı performans sorunlarını giderme kılavuzu için bu belgedeki Önerilen sorun giderme akışı akış çizelgesine bakın.
Akıllı içgörüler şu bölgelerde bulunmayan bir önizleme özelliğidir: Batı Avrupa, Kuzey Avrupa, Batı ABD 1 ve Doğu ABD 1.
Algılanabilir veritabanı performans desenleri
Intelligent Insights, sorgu yürütme bekleme sürelerine, hatalara veya zaman aşımlarına göre performans sorunlarını otomatik olarak algılar. Intelligent Insights, kaynak günlüğüne performans desenleri algılar. Algılanabilir performans desenleri aşağıdaki tabloda özetlenmiştir.
Algılanabilir performans desenleri | Azure SQL Veritabanı | Azure SQL Yönetilen Örnek |
---|---|---|
Kaynak sınırlarına ulaşma | İzlenen abonelikte kullanılabilen kullanılabilir kaynakların, veritabanı çalışan iş parçacıklarının veya veritabanı oturum açma oturumlarının tüketimi kaynak sınırlarına ulaşmıştır. Bu, performansı etkiliyor. | CPU kaynaklarının tüketimi kaynak sınırlarına ulaşıyor. Bu, veritabanı performansını etkiliyor. |
İş yükü artışı | veritabanında iş yükü artışı veya sürekli birikmesi algılandı. Bu, performansı etkiliyor. | İş yükü artışı algılandı. Bu, veritabanı performansını etkiliyor. |
Bellek baskısı | Bellek izinleri isteyen çalışanların istatistiksel olarak önemli süreler için bellek ayırmalarını beklemesi veya bellek izinleri isteyen çalışan birikiminin artması gerekir. Bu, performansı etkiliyor. | Bellek izinleri isteyen çalışanlar, istatistiksel olarak önemli bir süre için bellek ayırmalarını bekliyor. Bu, veritabanı performansını etkiliyor. |
Kilitleniyor | Performansı etkileyen aşırı veritabanı kilitlemesi algılandı. | Veritabanı performansını etkileyen aşırı veritabanı kilitlemesi algılandı. |
Artan MAXDOP | Paralellik seçeneğinin (MAXDOP) en yüksek derecesi, sorgu yürütme verimliliğini etkileyen şekilde değişti. Bu, performansı etkiliyor. | Paralellik seçeneğinin (MAXDOP) en yüksek derecesi, sorgu yürütme verimliliğini etkileyen şekilde değişti. Bu, performansı etkiliyor. |
Pagelatch çekişmesi | Birden çok iş parçacığı eşzamanlı olarak aynı bellek içi veri arabelleği sayfalarına erişmeye çalışır ve bu da bekleme sürelerinin artmasına ve sayfa eşleştirme çekişmesinin artmasına neden olur. Bu, performansı etkiliyor. | Birden çok iş parçacığı eşzamanlı olarak aynı bellek içi veri arabelleği sayfalarına erişmeye çalışır ve bu da bekleme sürelerinin artmasına ve sayfa eşleştirme çekişmesinin artmasına neden olur. Bu, veritabanının performansını etkiliyor. |
Eksik Dizin | Performansı etkileyen eksik dizin algılandı. | Veritabanı performansını etkileyen eksik dizin algılandı. |
Yeni Sorgu | Genel performansı etkileyen yeni sorgu algılandı. | Genel veritabanı performansını etkileyen yeni sorgu algılandı. |
Artan Bekleme İstatistikleri | Performansı etkileyen veritabanı bekleme sürelerinin arttığı algılandı. | Veritabanı performansını etkileyen artan veritabanı bekleme süreleri algılandı. |
TempDB Çekişmesi | Birden çok iş parçacığı aynı tempdb kaynağa erişmeye çalışıyor ve bu da bir performans sorununa neden oluyor. Bu, performansı etkiliyor. |
Birden çok iş parçacığı aynı tempdb kaynağa erişmeye çalışıyor ve bu da bir performans sorununa neden oluyor. Bu, veritabanı performansını etkiliyor. |
Elastik havuz DTU kıtlığı | Elastik havuzdaki kullanılabilir eDTU'ların yetersiz olması performansı etkiliyor. | Sanal çekirdek modelini kullandığından Azure SQL Yönetilen Örneği için kullanılamaz. |
Plan Regresyonu | Yeni plan veya mevcut bir planın iş yükünde bir değişiklik algılandı. Bu, performansı etkiliyor. | Yeni plan veya mevcut bir planın iş yükünde bir değişiklik algılandı. Bu, veritabanı performansını etkiliyor. |
Veritabanı kapsamlı yapılandırma değeri değişikliği | Veritabanı performansını etkileyen veritabanında yapılandırma değişikliği algılandı. | Veritabanı performansını etkileyen veritabanında yapılandırma değişikliği algılandı. |
Yavaş istemci | Yavaş uygulama istemcisi veritabanından yeterince hızlı çıktı kullanamıyor. Bu, performansı etkiliyor. | Yavaş uygulama istemcisi veritabanından yeterince hızlı çıktı kullanamıyor. Bu, veritabanı performansını etkiliyor. |
Fiyatlandırma katmanını düşürme | Fiyatlandırma katmanı düşürme eylemi kullanılabilir kaynakları azaltıldı. Bu, performansı etkiliyor. | Fiyatlandırma katmanı düşürme eylemi kullanılabilir kaynakları azaltıldı. Bu, veritabanı performansını etkiliyor. |
İpucu
Veritabanlarının sürekli performans iyileştirmesi için otomatik ayarlamayı etkinleştirin. Bu yerleşik zeka özelliği veritabanınızı sürekli izler, dizinleri otomatik olarak ayarlayıp sorgu yürütme planı düzeltmeleri uygular.
Aşağıdaki bölümde algılanabilir performans desenleri daha ayrıntılı olarak açıklanmaktadır.
Kaynak sınırlarına ulaşma
Ne oluyor
Bu algılanabilir performans düzeni, kullanılabilir kaynak sınırlarına, çalışan sınırlarına ve oturum sınırlarına ulaşmayla ilgili performans sorunlarını birleştirir. Bu performans sorunu algılandıktan sonra, tanılama günlüğünün açıklama alanı performans sorununun kaynak, çalışan veya oturum sınırlarıyla ilgili olup olmadığını gösterir.
Azure SQL Veritabanı kaynakları genellikle DTU veya sanal çekirdek kaynaklarına, Azure SQL Yönetilen Örneği üzerindeki kaynaklar ise sanal çekirdek kaynakları olarak adlandırılır. Sorgu performansı düşüşü algılandığında, ölçülen kaynak sınırlarından herhangi birine ulaşılması nedeniyle kaynak sınırlarına ulaşma düzeni tanınır.
Oturum sınırları kaynağı, veritabanındaki kullanılabilir eşzamanlı oturum açma sayısını belirtir. Bu performans düzeni, veritabanlarına bağlı uygulamalar veritabanında kullanılabilir eşzamanlı oturum açma sayısına ulaştığında tanınır. Uygulamalar veritabanındaki kullanılabilir oturumlardan daha fazla oturum kullanmayı denerse sorgu performansı etkilenir.
Kullanılabilir çalışanlar DTU veya sanal çekirdek kullanımında sayılamadığından, çalışan sınırlarına ulaşmak belirli bir kaynak sınırlarına ulaşma durumudur. Veritabanında çalışan sınırlarına ulaşmak kaynağa özgü bekleme sürelerinin artmasına neden olabilir ve bu da sorgu performansında düşüşe neden olur.
Kaynak sınırlarıyla ilgili sorunları giderme
Tanılama günlüğü, performans ve kaynak tüketimi yüzdelerini etkileyen sorguların sorgu karmalarını oluşturur. Bu bilgileri veritabanı iş yükünüzü iyileştirmek için başlangıç noktası olarak kullanabilirsiniz. Özellikle, dizinler ekleyerek performans düşüşü etkileyen sorguları iyileştirebilirsiniz. Ya da uygulamaları daha eşit bir iş yükü dağıtımıyla iyileştirebilirsiniz. İş yüklerini azaltamıyor veya iyileştirme yapamıyorsanız, kullanılabilir kaynak miktarını artırmak için veritabanı aboneliğinizin fiyatlandırma katmanını artırmayı göz önünde bulundurun.
Kullanılabilir oturum sınırlarına ulaştıysanız, veritabanında yapılan oturum açma sayısını azaltarak uygulamalarınızı iyileştirebilirsiniz. Uygulamalarınızdan veritabanına oturum açma sayısını azaltamıyorsanız veritabanı aboneliğinizin fiyatlandırma katmanını artırmayı göz önünde bulundurun. Alternatif olarak, daha dengeli bir iş yükü dağıtımı için veritabanınızı birden çok veritabanına bölebilir ve taşıyabilirsiniz.
Oturum sınırlarını çözme hakkında daha fazla öneri için bkz . En fazla oturum açma sayısı sınırıyla başa çıkma. Sunucu ve abonelik düzeylerindeki sınırlar hakkında bilgi için bkz. Azure SQL Veritabanı kaynak yönetimi.
İş yükü artışı
Ne oluyor
Bu performans düzeni, bir iş yükü artışının veya daha ciddi biçimde bir iş yükü yığınının neden olduğu sorunları tanımlar.
Bu algılama, çeşitli ölçümlerin bir bileşimi aracılığıyla yapılır. Ölçülen temel ölçüm, geçmiş iş yükü temeliyle karşılaştırıldığında iş yükündeki artışı algılamaktır. Diğer algılama biçimi, etkin çalışan iş parçacıklarında sorgu performansını etkilemek için yeterince büyük olan büyük bir artışı ölçmeyi temel alır.
Daha ciddi bir biçimde, veritabanının iş yükünü işleyememesi nedeniyle iş yükü sürekli yığılabilir. Sonuç, iş yükü yığma koşulu olan sürekli büyüyen bir iş yükü boyutudur. Bu koşul nedeniyle, iş yükünün yürütmeyi beklediği süre artar. Bu koşul, en ciddi veritabanı performansı sorunlarından birini temsil eder. Durdurulan çalışan iş parçacığı sayısındaki artış izlenerek bu sorun algılanır.
İş yükü büyümesi sorunlarını giderme
Tanılama günlüğü, yürütmesi artan sorgu sayısını ve iş yükü artışına en büyük katkıyı içeren sorgunun sorgu karmasını verir. Bu bilgileri iş yükünü iyileştirmek için başlangıç noktası olarak kullanabilirsiniz. İş yükü artışına en büyük katkıda bulunan olarak tanımlanan sorgu, özellikle başlangıç noktanız olarak yararlıdır.
İş yüklerini veritabanına daha eşit bir şekilde dağıtmayı düşünebilirsiniz. Dizinler ekleyerek performansı etkileyen sorguyu iyileştirmeyi göz önünde bulundurun. Ayrıca iş yükünüzü birden çok veritabanı arasında dağıtabilirsiniz. Bu çözümler mümkün değilse, kullanılabilir kaynak miktarını artırmak için veritabanı aboneliğinizin fiyatlandırma katmanını artırmayı göz önünde bulundurun.
Bellek baskısı
Ne oluyor
Bu performans deseni, geçerli veritabanı performansında bellek baskısının neden olduğu düşüşü veya daha ciddi biçimde bellek yığma koşulunun son yedi günlük performans temeline kıyasla olduğunu gösterir.
Bellek baskısı, bellek izni isteyen çok sayıda çalışan iş parçacığının bulunduğu bir performans koşulunu belirtir. Yüksek hacim, veritabanının bunu isteyen tüm çalışanlara verimli bir şekilde bellek ayıramadığı yüksek bellek kullanım koşuluna neden olur. Bu sorunun en yaygın nedenlerinden biri, bir yandan veritabanı için kullanılabilir bellek miktarıyla ilgilidir. Öte yandan, iş yükündeki artış çalışan iş parçacıklarındaki artışa ve bellek baskısına neden olur.
Bellek baskısının daha ciddi biçimi, bellek yığma durumudur. Bu koşul, belleği serbest bırakmayan sorgulardan daha fazla sayıda çalışan iş parçacığının bellek ataması isteğinde bulunduğunu gösterir. Veritabanı altyapısı, belleği talebi karşılayacak kadar verimli bir şekilde ayıramadığından bellek verme isteğinde bulunan bu sayıda çalışan iş parçacığı da sürekli artabilir (birikiyor). Bellek yığın durumu, en ciddi veritabanı performansı sorunlarından birini temsil eder.
Bellek baskısı sorunlarını giderme
Tanılama günlüğü, yüksek bellek kullanımı ve ilgili zaman damgaları için en yüksek neden olarak işaretlenen katip (çalışan iş parçacığı) ile bellek nesne deposu ayrıntılarının çıkışını oluşturur. Bu bilgileri sorun giderme için temel olarak kullanabilirsiniz.
En yüksek bellek kullanımına sahip katiplerle ilgili sorguları iyileştirebilir veya kaldırabilirsiniz. Kullanmayı planlamadığınız verileri sorgulamadığınızdan da emin olabilirsiniz. Sorgularınızda her zaman WHERE yan tümcesi kullanmak iyi bir uygulamadır. Ayrıca, verileri taramak yerine aramak için kümelenmemiş dizinler oluşturmanızı öneririz.
Ayrıca, iş yükünü iyileştirerek veya birden çok veritabanına dağıtarak da azaltabilirsiniz. İsterseniz iş yükünüzü birden çok veritabanı arasında dağıtabilirsiniz. Bu çözümler mümkün değilse veritabanınızda kullanılabilir bellek kaynağı miktarını artırmak için veritabanınızın fiyatlandırma katmanını artırmayı göz önünde bulundurun.
Ek sorun giderme önerileri için bkz . Bellek meditasyonu verir: Birçok adı olan gizemli SQL Server bellek tüketicisi. Azure SQL Veritabanı bellek yetersiz hataları hakkında daha fazla bilgi için bkz. Azure SQL Veritabanı ile bellek yetersiz hatalarını giderme.
Kilitleniyor
Ne oluyor
Bu performans düzeni, son yedi günlük performans temeline kıyasla aşırı veritabanı kilitlemesinin algılandığı geçerli veritabanı performansındaki düşüşü gösterir.
Modern RDBMS'de kilitleme, mümkün olduğunda birden çok eşzamanlı çalışan ve paralel veritabanı işlemi çalıştırılarak performansın en üst düzeye çıkarıldığı çok iş parçacıklı sistemlerin uygulanması için gereklidir. Bu bağlamda kilitleme, yalnızca tek bir işlemin gerekli olan ve kaynaklar için başka bir işlemle rekabet etmeyen satırlara, sayfalara, tablolara ve dosyalara özel olarak erişebildiği yerleşik erişim mekanizmasını ifade eder. Kaynakları kullanım için kilitleyen işlem onlarla yapıldığında, bu kaynaklardaki kilit serbest bırakılır ve bu da diğer işlemlerin gerekli kaynaklara erişmesine olanak tanır. Kilitleme hakkında daha fazla bilgi için bkz . Veritabanı altyapısında kilitleme.
SQL altyapısı tarafından yürütülen işlemler kullanım için kilitlenmiş kaynaklara erişmek için uzun süreler bekliyorsa, bu bekleme süresi iş yükü yürütme performansının yavaşlamasına neden olur.
Kilitleme ve engelleme sorunlarını giderme
Tanılama günlüğü, sorun giderme için temel olarak kullanabileceğiniz kilitleme ayrıntılarının çıkışını oluşturur. Bildirilen engelleme sorgularını, yani kilitleme performansı düşüşü sağlayan sorguları analiz edebilir ve bunları kaldırabilirsiniz. Bazı durumlarda engelleme sorgularını iyileştirme konusunda başarılı olabilirsiniz.
Sorunu azaltmanın en basit ve en güvenli yolu, işlemleri kısa tutmak ve en pahalı sorguların kilit ayak izini azaltmaktır. Büyük bir işlem toplu işlemini daha küçük işlemlere bölebilirsiniz. Sorguyu mümkün olduğunca verimli hale getirerek sorgu kilidi ayak izini azaltmak iyi bir uygulamadır. Kilitlenme olasılığını artırdığından ve genel veritabanı performansını olumsuz etkilediğinden büyük taramaları azaltın. Kilitlemeye neden olan tanımlanmış sorgular için, tablo taramalarını önlemek için yeni dizinler oluşturabilir veya var olan dizine sütunlar ekleyebilirsiniz.
Daha fazla öneri için bkz:
- Azure SQL Veritabanı engelleme sorunlarını anlama ve çözme
- SQL Server'da kilit yükseltmesi nedeniyle oluşan engelleme sorunlarını çözme
Artan MAXDOP
Ne oluyor
Bu algılanabilir performans düzeni, seçilen sorgu yürütme planının olması gerekenden daha fazla paralelleştirildiği bir koşulu gösterir. Sorgu iyileştiricisi, mümkün olduğunca işleri hızlandırmak için sorguları paralel olarak yürüterek iş yükü performansını artırabilir. Bazı durumlarda, bir sorguyu işleyen paralel çalışanlar, aynı sorguyu daha az paralel çalışanla ve hatta bazı durumlarda tek bir çalışan iş parçacığıyla yürütmeye kıyasla sonuçları eşitlemek ve birleştirmek için birbirlerini beklerken daha fazla zaman harcar.
Uzman sistem, temel dönemle karşılaştırıldığında geçerli veritabanı performansını analiz eder. Sorgu yürütme planı olması gerekenden daha paralel olduğundan daha önce çalışan bir sorgunun öncekinden daha yavaş çalışıp çalışmadığını belirler.
MAXDOP sunucu yapılandırma seçeneği, aynı sorguyu paralel olarak yürütmek için kaç CPU çekirdeğinin kullanılabileceğini denetlemek için kullanılır.
Paralellik sorunlarını giderme
Tanılama günlüğü, yürütme süresinin arttığı sorgularla ilgili sorgu karmalarının çıkışlarını oluşturur çünkü bunlar olması gerekenden daha fazla paralelleştirilmiştir. Günlük ayrıca CXP bekleme sürelerini de döndürür. Bu süre, sonuçları birleştirmeden ve ilerlemeden önce tek bir düzenleyici/düzenleyici iş parçacığının (iş parçacığı 0) diğer tüm iş parçacıklarının bitme zamanını temsil eder. Ayrıca tanılama günlüğü, düşük performanslı sorguların genel olarak yürütülmeyi beklediği bekleme sürelerini de gösterir. Bu bilgileri sorun giderme için temel olarak kullanabilirsiniz.
İlk olarak, karmaşık sorguları iyileştirin veya basitleştirin. Uzun toplu işleri daha küçük işlere ayırmak iyi bir uygulamadır. Ayrıca, sorgularınızı desteklemek için dizinler oluşturduğunuzdan emin olun. Ayrıca, düşük performanslı olarak işaretlenen bir sorgu için en yüksek paralellik derecesini (MAXDOP) el ile de zorlayabilirsiniz. Bu işlemi T-SQL kullanarak yapılandırmak için bkz . MAXDOP sunucu yapılandırma seçeneğini yapılandırma.
MAXDOP sunucu yapılandırma seçeneğinin sıfır (0) olarak ayarlanması, veritabanının kullanılabilir tüm CPU çekirdeklerini kullanarak iş parçacıklarını tek bir sorgu yürütmeye paralel hale getirebileceğini belirtir. MAXDOP değerinin bir (1) olarak ayarlanması, tek bir sorgu yürütmesi için yalnızca bir çekirdeğin kullanılabileceğini belirtir. Pratikte bu, paralelliğin kapalı olduğu anlamına gelir. Büyük/küçük harf temelinde, veritabanındaki kullanılabilir çekirdeklere ve tanılama günlüğü bilgilerine bağlı olarak, MAXDOP seçeneğini, sizin durumunuzda sorunu çözebilecek paralel sorgu yürütme için kullanılan çekirdek sayısına ayarlayabilirsiniz.
Pagelatch çekişmesi
Ne oluyor
Bu performans deseni, son yedi günlük iş yükü temeline kıyasla sayfa eşleştirme çekişmesi nedeniyle geçerli veritabanı iş yükü performansındaki düşüşü gösterir.
Mandallar, çoklu iş parçacıklarını etkinleştirmek için kullanılan basit eşitleme mekanizmalarıdır. Dizinleri, veri sayfalarını ve diğer iç yapıları içeren bellek içi yapıların tutarlılığını garanti eder.
Çok sayıda mandal türü vardır. Kolaylık sağlamak amacıyla, arabellek havuzundaki bellek içi sayfaları korumak için arabellek mandalları kullanılır. GÇ mandalları, henüz arabellek havuzuna yüklenmemiş sayfaları korumak için kullanılır. Arabellek havuzundaki bir sayfaya veri yazılması veya bu sayfadan okunması halinde, bir çalışan iş parçacığının önce sayfa için bir arabellek mandalı alması gerekir. Bir çalışan iş parçacığı bellek içi arabellek havuzunda henüz kullanılabilir olmayan bir sayfaya erişmeye çalıştığında, depolama alanından gerekli bilgileri yüklemek için bir GÇ isteği yapılır. Bu olay dizisi daha ciddi bir performans düşüşü biçimini gösterir.
Sayfa mandallarındaki çekişmeler, birden çok iş parçacığı aynı anda aynı bellek içi yapıda mandalları almaya çalıştığında oluşur ve bu da sorgu yürütme için daha uzun bir bekleme süresi sağlar. Disk belleği çakışması GÇ çekişmesi söz konusu olduğunda, verilere depolama alanından erişilmesi gerektiğinde bu bekleme süresi daha da uzun olur. İş yükü performansını önemli ölçüde etkileyebilir. Pagelatch çekişmesi, birbirini bekleyen ve birden çok CPU sistemindeki kaynaklar için rekabet eden iş parçacıklarının en yaygın senaryosudur.
Sayfa eşleştirme çekişmesi sorunlarını giderme
Tanılama günlüğü, sayfa eşleştirme çekişmesi ayrıntılarının çıkışını oluşturur. Bu bilgileri sorun giderme için temel olarak kullanabilirsiniz.
Pagelatch bir iç denetim mekanizması olduğundan, bunların ne zaman kullanılacağını otomatik olarak belirler. Şema tasarımı da dahil olmak üzere uygulama kararları, mandalların belirlenimci davranışı nedeniyle pagelatch davranışını etkileyebilir.
Mandal çekişmesi işlemenin bir yöntemi, sıralı dizin anahtarını sıralı olmayan bir anahtarla değiştirerek eklemeleri bir dizin aralığına eşit olarak dağıtmaktır. Genellikle, dizindeki önde gelen bir sütun iş yükünü orantılı olarak dağıtır. Dikkate alınması gereken bir diğer yöntem de tablo bölümlemedir. Bölümlenmiş tabloda hesaplanan bir sütunla karma bölümleme şeması oluşturmak, aşırı mandal çekişmelerini azaltmaya yönelik yaygın bir yaklaşımdır. Sayfa eşleştirme GÇ çekişmesi söz konusu olduğunda dizinlerin tanıtılması bu performans sorununun azaltılmasına yardımcı olur.
Daha fazla bilgi için bkz . SQL Server'da mandal çekişmesi tanılama ve çözme (PDF indirme).
Eksik dizin
Ne oluyor
Bu performans deseni, eksik dizin nedeniyle son yedi günlük temele kıyasla geçerli veritabanı iş yükü performans düşüşü olduğunu gösterir.
Dizin, sorguların performansını hızlandırmak için kullanılır. Ziyaret edilmesi veya taranılması gereken veri kümesi sayfalarının sayısını azaltarak tablo verilerine hızlı erişim sağlar.
Performans düşüşlerine neden olan belirli sorgular, dizin oluşturmanın performans açısından yararlı olacağı bu algılama aracılığıyla tanımlanır.
Dizinlerle ilgili pahalı sorgularla ilgili sorunları giderme
Tanılama günlüğü, iş yükü performansını etkilemek üzere tanımlanan sorgular için sorgu karmaları oluşturur. Bu sorgular için dizinler oluşturabilirsiniz. Ayrıca, gerekli değilse bu sorguları iyileştirebilir veya kaldırabilirsiniz. İyi bir performans uygulaması, kullanmadığınız verileri sorgulamaktan kaçınmaktır.
İpucu
Yerleşik zekanın veritabanlarınız için en iyi performansa sahip dizinleri otomatik olarak yönetebileceğini biliyor muydunuz?
Sürekli performans iyileştirmesi için otomatik ayarlamayı etkinleştirmenizi öneririz. Bu benzersiz yerleşik zeka özelliği veritabanınızı sürekli izler ve veritabanlarınız için dizinleri otomatik olarak ayarlayıp oluşturur.
Yeni sorgu
Ne oluyor
Bu performans düzeni, düşük performans gösteren ve yedi günlük performans temeline kıyasla iş yükü performansını etkileyen yeni bir sorgu algılandığını gösterir.
İyi performans gösteren bir sorgu yazmak bazen zorlayıcı bir görev olabilir. Sorgu yazma hakkında daha fazla bilgi için bkz . SQL sorguları yazma. Mevcut sorgu performansını iyileştirmek için bkz . Sorgu ayarlama.
Sorgu performansı sorunlarını giderme
Tanılama günlüğü, sorgu karmaları da dahil olmak üzere en fazla iki yeni EN ÇOK CPU kullanan sorgunun çıktısını alır. Algılanan sorgu iş yükü performansını etkilediğinden sorgunuzu iyileştirebilirsiniz. Yalnızca kullanmanız gereken verileri almak iyi bir uygulamadır. Ayrıca, yan WHERE
tümcesi olan sorguları kullanmanızı öneririz. Ayrıca karmaşık sorguları basitleştirmenizi ve bunları daha küçük sorgulara ayırmanızı öneririz. Bir diğer iyi uygulama da büyük toplu iş sorgularını daha küçük toplu iş sorgularına bölmektir. Yeni sorgular için dizinlere giriş yapmak genellikle bu performans sorununu azaltmak için iyi bir uygulamadır.
Azure SQL Veritabanı'da Azure SQL Veritabanı için Sorgu Performansı İçgörüleri'ne göz atın.
Artan bekleme istatistiği
Ne oluyor
Bu algılanabilir performans deseni, son yedi günlük iş yükü temeline kıyasla düşük performanslı sorguların tanımlandığı bir iş yükü performansı düşüşü olduğunu gösterir.
Bu durumda sistem, düşük performanslı sorguları diğer standart algılanabilir performans kategorileri altında sınıflandıramaz, ancak regresyondan sorumlu bekleme istatistiğini algılar. Bu nedenle, bunları artan bekleme istatistiklerine sahip sorgular olarak değerlendirir ve burada regresyondan sorumlu bekleme istatistiği de ortaya çıkar.
Bekleme istatistikleriyle ilgili sorunları giderme
Tanılama günlüğü, etkilenen sorguların artan bekleme süresi ayrıntıları ve sorgu karmaları hakkında bilgi çıkışı sağlar.
Sistem düşük performanslı sorguların kök nedenini başarıyla belirleyemediğinden, tanılama bilgileri el ile sorun giderme için iyi bir başlangıç noktasıdır. Bu sorguların performansını iyileştirebilirsiniz. Yalnızca kullanmanız gereken verileri getirmek ve karmaşık sorguları basitleştirip daha küçük sorgulara bölmek iyi bir uygulamadır.
Sorgu performansını iyileştirme hakkında daha fazla bilgi için bkz . Sorgu ayarlama.
Tempdb çekişmesi
Ne oluyor
Bu algılanabilir performans düzeni, kaynaklara erişmeye tempdb
çalışan iş parçacıklarının performans sorunlarının bulunduğu bir veritabanı performans durumunu gösterir. (Bu koşul GÇ ile ilgili değildir.) Bu performans sorunu için tipik senaryo, küçük tempdb
tablolar oluşturan, kullanan ve sonra bırakan yüzlerce eşzamanlı sorgudur. Sistem, aynı tempdb
tabloları kullanan eşzamanlı sorgu sayısının son yedi günlük performans temeline kıyasla veritabanı performansını etkilemek için yeterli istatistiksel öneme sahip olduğunu algılamıştı.
Tempdb çekişmesi sorunlarını giderme
Tanılama günlüğü çekişme ayrıntılarının çıkışını tempdb
oluşturur. Sorun giderme için başlangıç noktası olarak bilgileri kullanabilirsiniz. Bu tür bir çekişmeyi hafifletmek ve genel iş yükünün aktarım hızını artırmak için izleyebileceğiniz iki şey vardır: Geçici tabloları kullanmayı durdurabilirsiniz. Bellek için iyileştirilmiş tabloları da kullanabilirsiniz.
Daha fazla bilgi için bkz . Bellek için iyileştirilmiş tablolara giriş.
Elastik havuz DTU kıtlığı
Ne oluyor
Bu algılanabilir performans deseni, geçerli veritabanı iş yükü performansında son yedi günlük temele kıyasla bir düşüş olduğunu gösterir. Bunun nedeni, aboneliğinizin elastik havuzunda kullanılabilir DTU'ların yetersiz olmasıdır.
Azure elastik havuz kaynakları , ölçeklendirme amacıyla birden çok veritabanı arasında paylaşılan kullanılabilir kaynakların havuzu olarak kullanılır. Elastik havuzunuzdaki eDTU kaynakları havuzdaki tüm veritabanlarını destekleyecek kadar büyük olmadığında, sistem tarafından bir elastik havuz DTU yetersizlik performansı sorunu algılanır.
Elastik havuz DTU yetersizlik sorunlarını giderme
Tanılama günlüğü elastik havuzdaki bilgileri verir, en çok DTU kullanan veritabanlarını listeler ve en çok tüketen veritabanı tarafından kullanılan havuzun DTU'sunun bir yüzdesini sağlar.
Bu performans koşulu, elastik havuzda aynı eDTU havuzunu kullanan birden çok veritabanıyla ilişkili olduğundan, sorun giderme adımları en çok DTU kullanan veritabanlarına odaklanır. Bu veritabanlarında en çok tüketen sorguları iyileştirmeyi içeren en çok tüketen veritabanlarındaki iş yükünü azaltabilirsiniz. Kullanmadığınız verileri sorgulamadığınızdan da emin olabilirsiniz. Bir diğer yaklaşım da en çok DTU kullanan veritabanlarını kullanarak uygulamaları iyileştirmek ve iş yükünü birden çok veritabanı arasında yeniden dağıtmaktır.
En çok DTU kullanan veritabanlarınızda geçerli iş yükünü azaltma ve iyileştirme mümkün değilse elastik havuz fiyatlandırma katmanınızı artırmayı göz önünde bulundurun. Bu artış elastik havuzdaki kullanılabilir DTU'ların artmasına neden olur.
Regresyonu planlama
Ne oluyor
Bu algılanabilir performans deseni, veritabanının en iyi olmayan sorgu yürütme planını kullandığı bir koşulu belirtir. En iyi durumdaki plan genellikle sorgu yürütmenin artmasına neden olur ve bu da geçerli ve diğer sorgular için daha uzun bekleme sürelerine yol açar.
Veritabanı altyapısı, sorgu yürütme planını bir sorgu yürütmeye en düşük maliyetle belirler. Sorguların ve iş yüklerinin türü değiştikçe, bazen mevcut planlar artık verimli değildir veya veritabanı altyapısı iyi bir değerlendirme yapmamış olabilir. Düzeltme açısından, sorgu yürütme planları el ile zorlanabilir.
Bu algılanabilir performans düzeni üç farklı plan regresyonu örneğini birleştirir: yeni plan regresyonu, eski plan regresyonu ve mevcut planlar iş yükünü değiştirdi. Oluşan belirli plan regresyonu türü, tanılama günlüğündeki details özelliğinde sağlanır.
Yeni plan regresyon koşulu, veritabanı altyapısının eski plan kadar verimli olmayan yeni bir sorgu yürütme planı yürütmeye başladığı durumu ifade eder. Eski plan regresyonu koşulu, veritabanı altyapısının yeni ve daha verimli bir plan kullanmaktan eski plana geçtiği ve yeni plan kadar verimli olmayan durumu ifade eder. Mevcut planların değişen iş yükü regresyonu, eski ve yeni planların sürekli olarak değiştiği durumu ifade eder ve bakiye düşük performanslı plana doğru daha fazla ilerler.
Plan regresyonları hakkında daha fazla bilgi için bkz. SQL Server'da plan regresyonu nedir?
Plan regresyonu sorunlarını giderme
Tanılama günlüğü sorgu karmalarını, iyi plan kimliğini, hatalı plan kimliğini ve sorgu kimliklerini verir. Bu bilgileri sorun giderme için temel olarak kullanabilirsiniz.
Sağlanan sorgu karmalarıyla tanımlayabildiğiniz belirli sorgularınız için hangi planın daha iyi performans sergilediğini analiz edebilirsiniz. Sorgularınız için hangi planın daha iyi çalıştığını belirledikten sonra el ile zorlayabilirsiniz.
Daha fazla bilgi için bkz . SQL Server'ın plan regresyonlarını nasıl önlediğini öğrenin.
İpucu
Yerleşik zeka özelliğinin veritabanlarınız için en iyi performansa sahip sorgu yürütme planlarını otomatik olarak yönetebileceğini biliyor muydunuz?
Sürekli performans iyileştirmesi için otomatik ayarlamayı etkinleştirmenizi öneririz. Bu yerleşik zeka özelliği veritabanınızı sürekli izler ve veritabanlarınız için en iyi performansa yönelik sorgu yürütme planlarını otomatik olarak ayarlayıp oluşturur.
Veritabanı kapsamlı yapılandırma değeri değişikliği
Ne oluyor
Bu algılanabilir performans deseni, veritabanı kapsamlı yapılandırmadaki bir değişikliğin son yedi günlük veritabanı iş yükü davranışıyla karşılaştırıldığında algılanan performans regresyonuna neden olduğu bir koşulu gösterir. Bu desen, veritabanı kapsamlı yapılandırmada yapılan yeni bir değişikliğin veritabanı performansınız için faydalı olmadığını belirtir.
Veritabanı kapsamlı yapılandırma değişiklikleri her veritabanı için ayarlanabilir. Bu yapılandırma, veritabanınızın tek tek performansını iyileştirmek için büyük/küçük harf temelinde kullanılır. Her veritabanı için şu seçenekler yapılandırılabilir: MAXDOP, LEGACY_CARDINALITY_ESTIMATION, PARAMETER_SNIFFING, QUERY_OPTIMIZER_HOTFIXES ve CLEAR PROCEDURE_CACHE.
Veritabanı kapsamlı yapılandırma değişikliklerini giderme
Tanılama günlüğü, son zamanlarda yapılan ve önceki yedi günlük iş yükü davranışına kıyasla performans düşüşlerine neden olan veritabanı kapsamlı yapılandırma değişikliklerinin çıkışını alır. Yapılandırma değişikliklerini önceki değerlere geri döndürebilirsiniz. ayrıca, istenen performans düzeyine ulaşılana kadar değeri değere göre ayarlayabilirsiniz. Benzer bir veritabanından veritabanı kapsamı yapılandırma değerlerini tatmin edici performansla kopyalayabilirsiniz. Performans sorunlarını gideremiyorsanız varsayılan değerlere geri dönüp bu temelden başlayarak ince ayar yapmaya çalışabilirsiniz.
Yapılandırmayı değiştirme konusunda veritabanı kapsamlı yapılandırmayı ve T-SQL söz dizimini iyileştirme hakkında daha fazla bilgi için bkz . Veritabanı kapsamlı yapılandırmayı değiştirme (Transact-SQL).
Yavaş istemci
Ne oluyor
Bu algılanabilir performans deseni, veritabanını kullanan istemcinin sonuçları gönderdiği kadar hızlı bir şekilde veritabanından çıktıyı kullanamama durumunu gösterir. Veritabanı yürütülen sorguların sonuçlarını bir arabellekte depolamadığından yavaşlar ve devam etmeden önce istemcinin iletilen sorgu çıkışlarını tüketmesini bekler. Bu koşul, veritabanından çıkışları tüketen istemciye iletmek için yeterince hızlı olmayan bir ağ ile de ilgili olabilir.
Bu koşul yalnızca son yedi günlük veritabanı iş yükü davranışıyla karşılaştırıldığında bir performans gerilemesi algılanırsa oluşturulur. Bu performans sorunu yalnızca önceki performans davranışıyla karşılaştırıldığında istatistiksel olarak önemli bir performans düşüşü oluşursa algılanır.
İstemci tarafı uygulamalarıyla ilgili sorunları giderme
Bu algılanabilir performans deseni, istemci tarafı bir koşulu gösterir. İstemci tarafı uygulamasında veya istemci tarafı ağında sorun giderme gereklidir. Tanılama günlüğü, son iki saat içinde istemcinin bunları tüketmesini en çok bekleyen sorgu karmalarını ve bekleme sürelerini oluşturur. Bu bilgileri sorun giderme için temel olarak kullanabilirsiniz.
Bu sorguların kullanımı için uygulamanızın performansını iyileştirebilirsiniz. Olası ağ gecikmesi sorunlarını da göz önünde bulundurabilirsiniz. Performans düşüşü sorunu son yedi günlük performans temelindeki değişikliğe dayandığından, son uygulama veya ağ koşulu değişikliklerinin bu performans regresyonu olayına neden olup olmadığını araştırabilirsiniz.
Fiyat katmanını düşürme
Ne oluyor
Bu algılanabilir performans düzeni, veritabanı aboneliğinizin fiyatlandırma katmanının indirildiği bir koşulu gösterir. Veritabanı için kullanılabilir kaynakların azalması nedeniyle sistem, son yedi günlük temele kıyasla geçerli veritabanı performansında bir düşüş algılamıştı.
Buna ek olarak, veritabanı aboneliğinizin fiyatlandırma katmanının düşürülerek kısa bir süre içinde daha yüksek bir katmana yükseltilmesi koşulu da olabilir. Bu geçici performans düşüşünün algılanması, tanılama günlüğünün ayrıntılar bölümünde fiyatlandırma katmanı düşürme ve yükseltme olarak çıkarılır.
Fiyatlandırma katmanı sürüm düşürme sorunlarını giderme
Fiyatlandırma katmanınızı düşürdüyseniz ve performansla memnunsanız yapmanız gereken bir şey yoktur. Fiyatlandırma katmanınızı düşürdüyseniz ve veritabanı performansınızdan memnun değilseniz veritabanı iş yüklerinizi azaltın veya fiyatlandırma katmanını daha yüksek bir düzeye yükseltmeyi göz önünde bulundurun.
Önerilen sorun giderme akışı
Akıllı İçgörüler'i kullanarak performans sorunlarını gidermek için önerilen bir yaklaşım için akış çizelgesini izleyin.
Azure SQL Analytics'e giderek Azure portalı üzerinden Akıllı İçgörüler'e erişin. Gelen performans uyarısını bulmayı deneyin ve seçin. Algılamalar sayfasında neler olduğunu belirleyin. Sorunun kök neden analizini, sorgu metnini, sorgu zamanı eğilimlerini ve olay evrimini gözlemleyin. Performans sorununu azaltmak için Intelligent Insights önerisini kullanarak sorunu çözmeyi deneyin.
İpucu
PDF sürümünü indirmek için akış çizelgesini seçin.
Akıllı İçgörüler genellikle performans sorununun kök neden analizini gerçekleştirmek için bir saat zaman gerektirir. Sorununuzu Akıllı İçgörüler'de bulamıyorsanız ve sizin için kritikse, performans sorununun kök nedenini el ile belirlemek için Sorgu Deposu'nı kullanın. (Bu sorunlar genellikle bir saatten kısa sürer.) Daha fazla bilgi için bkz . Sorgu Deposu'nı kullanarak performansı izleme.
İlgili içerik
- Veritabanı performansını izlemek ve sorunlarını gidermek için Akıllı İçgörüler (önizleme)
- Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği performans sorunlarının Intelligent Insights performans tanılama günlüğünü kullanma
- Azure SQL Analizi
- Azure kaynaklarınızda günlük verilerini toplama ve kullanma