Aracılığıyla paylaş


Sorgu Deposu'nı kullanarak performansı izleme

Şunlar için geçerlidir: SQL Server 2016 (13.x) ve sonraki sürümleri Azure SQL VeritabanıAzure SQL Yönetilen ÖrnekAzure Synapse Analytics (yalnızca ayrılmış SQL havuzu)Microsoft Fabric'teki SQL veritabanı

Sorgu Deposu özelliği SQL Server, Azure SQL Veritabanı, Doku SQL veritabanı, Azure SQL Yönetilen Örneği ve Azure Synapse Analytics için sorgu planı seçimi ve performansı hakkında içgörü sağlar. Sorgu Deposu, sorgu planı değişikliklerinin neden olduğu performans farklarını hızla bulmanıza yardımcı olarak performans sorunlarını gidermeyi basitleştirir. Sorgu Deposu sorguların, planların ve çalışma zamanı istatistiklerinin geçmişini otomatik olarak yakalar ve bunları gözden geçirmeniz için saklar. Verileri zaman pencerelerine göre ayırır, böylece veritabanı kullanım düzenlerini görebilir ve sunucuda sorgu planı değişikliklerinin ne zaman gerçekleştiğini anlayabilirsiniz.

ALTER DATABASE SET seçeneğini kullanarak Sorgu Deposu'yu yapılandırabilirsiniz.

  • Azure SQL Veritabanı'nda Sorgu Deposu'yu çalıştırma hakkında bilgi için bkz. Azure SQL Veritabanı'nde Sorgu Deposunu çalıştırma.
  • Sorgu Deposu ile eyleme dönüştürülebilir bilgileri bulma ve performansı ayarlama hakkında bilgi için bkz. Sorgu Deposu ile performansı ayarlama.
  • Uygulama kodunu değiştirmeden sorgu planlarını şekillendirme hakkında bilgi için bkz. Sorgu Deposu ipuçları.

Önemli

SQL Server 2016'da (13.x) Sorgu Deposu'nu tam zamanında iş yükü içgörüleri için kullanıyorsanız, performans ölçeklenebilirlik düzeltmelerini en kısa sürede KB 4340759 yüklemeyi planlayın.

Sorgu Deposunu Etkinleştirme

  • Sorgu Deposu, yeni Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği veritabanları için varsayılan olarak etkindir.
  • Sql Server 2016 (13.x), SQL Server 2017 (14.x), SQL Server 2019 (15.x) için Sorgu Deposu varsayılan olarak etkin değildir. SQL Server 2022 (16.x) ile başlayan yeni veritabanları için READ_WRITE modunda varsayılan olarak etkinleştirilir. Özelliklerin performans geçmişini daha iyi izlemesini sağlamak, sorgu planıyla ilgili sorunları gidermek ve SQL Server 2022'de (16.x) yeni özellikleri etkinleştirmek için Tüm veritabanlarında Sorgu Deposu'nu etkinleştirmenizi öneririz.
  • Sorgu Deposu, yeni Azure Synapse Analytics veritabanları için varsayılan olarak etkin değildir.

SQL Server Management Studio'da Sorgu Deposu sayfasını kullanma

  1. Nesne Gezgini'nde bir veritabanına sağ tıklayın ve Özellikler'ni seçin.

    Not

    Management Studio'nun en az 16 sürümünü gerektirir.

  2. Veritabanı Özellikleri iletişim kutusunda Sorgu Deposu sayfasını seçin.

  3. İşlem Modu (İstenen) kutusunda, Okuma Yazmaseçin.

Transact-SQL ifadelerini kullan

Belirli bir veritabanı için Sorgu Deposu'nu etkinleştirmek amacıyla ALTER DATABASE deyimini kullanın. Mesela:

ALTER DATABASE <database_name>
SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE);

Fabric SQL veritabanındaki Sorgu Deposu'nu ALTER DATABASE ile yapılandırma seçenekleri şu anda sınırlıdır.

Azure Synapse Analytics'te Ek seçenekler olmadan Sorgu Deposu'yu etkinleştirin, örneğin:

ALTER DATABASE <database_name>
SET QUERY_STORE = ON;

Sorgu Deposu ile ilgili daha fazla söz dizimi seçeneği görmek için ALTER DATABASE SET Options (Transact-SQL)bölümüne bakın.

Not

Sorgu Deposu master veya tempdb veritabanları için etkinleştirilemez.

Önemli

Sorgu Deposu'yu etkinleştirme ve iş yükünüzle uyumlu tutma hakkında bilgi için bkz. Sorgu Deposuile En İyi Uygulama.

Sorgu Deposu'ndaki bilgiler

SQL Server'daki belirli bir sorgunun yürütme planları genellikle istatistik değişiklikleri, şema değişiklikleri, dizin oluşturma/silme gibi çeşitli nedenlerden dolayı zaman içinde gelişir. Yordam önbelleği (önbelleğe alınmış sorgu planlarının depolandığı) yalnızca en son yürütme planını depolar. Planlar ayrıca bellek baskısı nedeniyle plan önbelleğinden çıkarılır. Sonuç olarak, yürütme planı değişikliklerinin neden olduğu sorgu performansı regresyonları önemsiz olabilir ve çözmek için zaman alabilir.

Sorgu Deposu sorgu başına birden çok yürütme planını koruduğundan, Sorgu İşlemcisi'ni sorgu için belirli bir yürütme planını kullanmaya yönlendirmek için ilkeler uygulayabilir. Bu, plan zorlama olarak adlandırılır. Sorgu Deposu'nda plan zorlama, USE PLAN sorgu ipucuna benzer bir mekanizma kullanılarak sağlanır, ancak kullanıcı uygulamalarında herhangi bir değişiklik gerektirmez. Plan zorlama, plan değişikliğinin neden olduğu sorgu performansı gerilemesi sorununu çok kısa bir süre içinde çözebilir.

Not

Sorgu Deposu SELECT, INSERT, UPDATE, DELETE, MERGEve BULK INSERTgibi DML İfadeleri için planlar toplar.

Tasarım gereği Sorgu Deposu, CREATE INDEXgibi DDL deyimleri için planlar toplamaz. Sorgu Deposu, temel alınan DML deyimleri için planları toplayarak toplu kaynak tüketimini yakalar. Örneğin Sorgu Deposu, yeni bir dizini doldurmak için dahili olarak yürütülen SELECT ve INSERT deyimlerini görüntüleyebilir.

Sorgu Deposu varsayılan olarak yerel olarak derlenmiş saklı yordamlar için veri toplamaz. Yerel olarak derlenmiş saklı yordamlar için veri toplamayı etkinleştirmek için sys.sp_xtp_control_query_exec_stats kullanın.

Bekleme istatistikleri, Veritabanı Altyapısı'nda performans sorunlarını gidermeye yardımcı olan bir diğer bilgi kaynağıdır. Uzun bir süre için bekleme istatistikleri yalnızca örnek düzeyinde kullanılabilirdi ve bu da beklemeleri belirli bir sorguya geri döndürmeyi zorlaştırdı. SQL Server 2017 (14.x) ve Azure SQL Veritabanı'dan başlayarak, Sorgu Deposu bekleme istatistiklerini izleyen bir boyut içerir. Aşağıdaki örnek Sorgu Deposu'na bekleme istatistiklerini toplama olanağı sağlar.

ALTER DATABASE <database_name>
SET QUERY_STORE = ON ( WAIT_STATS_CAPTURE_MODE = ON );

Sorgu Deposu özelliğini kullanmaya yönelik yaygın senaryolar şunlardır:

  • Önceki sorgu planını zorlayarak plan performansı regresyonunu hızla bulun ve düzeltin. Yürütme planı değişiklikleri nedeniyle son zamanlarda performansta gerileyen sorguları düzeltin.
  • Bir sorgunun belirli bir zaman penceresinde kaç kez yürütüleceğini belirleyerek performans kaynağı sorunlarını gidermede DBA'ya yardımcı olun.
  • Son x saat içinde yürütme zamanı, bellek tüketimi vb. gibi kriterlere göre en üst n sorguları tanımlayın.
  • Belirli bir sorgu için sorgu planlarının geçmişini denetleyin.
  • Belirli bir veritabanı için kaynak (CPU, G/Ç ve Bellek) kullanım desenlerini analiz edin.
  • Kaynak bekleyen en üst n sorguyu belirleyin.
  • Belirli bir sorgu veya plan için bekleme doğasını anlayın.

Sorgu Deposu üç depo içerir:

  • yürütme planı bilgilerinin kalıcı hale getirilmesi için bir plan deposu.
  • yürütme istatistikleri bilgilerini kalıcı hale getiren bir çalışma zamanı istatistikleri deposu.
  • bekleme istatistikleri bilgilerinin kalıcı hale getirilmesi için bekleme istatistikleri deposu.

Plan deposundaki bir sorgu için depolanabilecek benzersiz plan sayısı, max_plans_per_query yapılandırma seçeneğiyle sınırlıdır. Performansı artırmak için veriler eşzamansız olarak depolara yazılır. Alan kullanımını en aza indirmek için, çalışma zamanı istatistikleri deposundaki çalışma zamanı yürütme istatistikleri sabit bir zaman aralığı boyunca toplanır. Bu depolardaki bilgiler, Sorgu Deposu katalog görünümlerini sorgulayarak görünür.

Aşağıdaki sorgu Sorgu Deposu'ndan sorgular, planları, derleme zamanı ve çalışma zamanı istatistikleri hakkında bilgi döndürür.

SELECT Txt.query_text_id, Txt.query_sql_text, Pln.plan_id, Qry.*, RtSt.*
FROM sys.query_store_plan AS Pln
INNER JOIN sys.query_store_query AS Qry
    ON Pln.query_id = Qry.query_id
INNER JOIN sys.query_store_query_text AS Txt
    ON Qry.query_text_id = Txt.query_text_id
INNER JOIN sys.query_store_runtime_stats RtSt
ON Pln.plan_id = RtSt.plan_id;

İkincil replikalar için Sorgu Deposu

Şunlar için geçerlidir: SQL Server (SQL Server 2022 (16.x) ile başlayarak)

İkincil çoğaltmalar için Sorgu Deposu özelliği, birincil çoğaltmalar için kullanılabilen ikincil çoğaltma iş yüklerinde aynı Sorgu Deposu işlevini etkinleştirir. İkincil çoğaltmalar için Sorgu Deposu etkinleştirildiğinde, çoğaltmalar normalde Sorgu Deposu'nda depolanacak sorgu yürütme bilgilerini birincil çoğaltmaya geri gönderir. Birincil çoğaltma, verileri kendi Sorgu Deposu'nda diske kaydeder. Temelde, birincil ve tüm ikincil çoğaltmalar arasında paylaşılan bir Sorgu Deposu vardır. Sorgu Deposu birincil çoğaltmada bulunur ve tüm çoğaltmaların verilerini birlikte depolar.

İkincil çoğaltmalar için Sorgu Deposu hakkında tam bilgi için bkz. Always On kullanılabilirlik grubu ikincil çoğaltmaları için Sorgu Deposu.

Gerileyen Sorgular özelliğini kullanma

Sorgu Deposu'nun etkinleştirilmesinin ardından Nesne Gezgini bölmesinin veritabanı bölümünü yenileyerek Sorgu Deposu bölümünü ekleyin.

SSMS Nesne Gezgini'ndeki Sorgu Deposu raporlama ağacının ekran görüntüsü.

Not

Azure Synapse Analytics için Sorgu Deposu görünümleri, Nesne Gezgini bölmesinin veritabanı bölümünde Sistem Görünümleri altında kullanılabilir.

SQL Server Management Studio'da Gerileyen Sorgular bölmesini açmak için Gerileyen Sorgular'i seçin. Gerileyen Sorgular sekmesi, Sorgu Deposu'ndaki sorguları ve planları görüntüler. Sorguları çeşitli ölçütlere göre filtrelemek için üstteki açılan liste kutularını kullanın: Süre (ms) (Varsayılan), CPU Süresi (ms), Mantıksal Okumalar (KB), Mantıksal Yazmalar (KB), Fiziksel Okumalar (KB), CLR Süresi (ms), DOP, Bellek Tüketimi (KB), Satır Sayısı, Kullanılan Günlük Belleği (KB), Kullanılan Geçici VERITABANı Belleği (KB) ve Bekleme Süresi (ms).

Grafik sorgu planını görmek için bir plan seçin. Kaynak sorguyu görüntülemek, sorgu planını zorlamak ve zorlamayı kaldırmak, kılavuz ve grafik biçimleri arasında geçiş yapmak, seçili planları karşılaştırmak (birden fazla seçiliyse) ve görüntüyü yenilemek için düğmeler kullanılabilir.

SSMS Nesne Gezgini'nde SQL Server Gerileyen Sorgular raporunun ekran görüntüsü.

Bir planı zorlamak için bir sorgu ve plan seçin, ardından Planı Zorla'ı seçin. Yalnızca sorgu planı özelliği tarafından kaydedilen ve hala sorgu planı önbelleğinde tutulan planları zorlayabilirsiniz.

Bekleyen sorguları bul

SQL Server 2017 (14.x) ve Azure SQL Veritabanı'dan başlayarak, zaman içinde sorgu başına bekleme istatistikleri Sorgu Deposu'nda kullanılabilir.

Sorgu Deposu'nda, bekleme türleri bekleme kategorileri halinde birleştirilir. sys.query_store_wait_stats (Transact-SQL) içinde bekleme kategorilerinin bekleme türlerine eşleştirilmesi mevcuttur.

SQL Server Management Studio 18.0 veya üzeri sürümlerde Sorgu Bekleme İstatistikleri bölmesini açmak için Sorgu Bekleme İstatistikleri seçin. Sorgu Bekleme İstatistikleri sekmesi, Sorgu Deposu'ndaki en yaygın bekleme kategorilerini içeren bir çubuk grafik gösterir. Bekleme süresi için bir toplama ölçütü seçmek amacıyla üstteki açılır listeyi kullanın: ortalama, maksimum, minimum, standart sapma ve toplam (varsayılan).

SSMS Nesne Gezgini'nde SQL Server Sorgu Bekleme İstatistikleri raporunun ekran görüntüsü.

Çubuğa tıklayarak bekleme kategorisi seçin, böylece seçilen bekleme kategorisinin ayrıntıları görüntülenir. Bu yeni çubuk grafik, bu bekleme kategorisine katkıda bulunan sorguları içerir.

SSMS Nesne Gezgini'nde SQL Server Sorgu Bekleme İstatistikleri ayrıntı görünümünün ekran görüntüsü.

Sorguları seçilen bekleme kategorisi için ortalama, maksimum, minimum, standart sapma ve toplam (varsayılan) ölçütlerine göre filtrelemek için üstteki açılır liste kutusunu kullanın. Grafik sorgu planını görmek için bir plan seçin. Kaynak sorguyu görüntülemek, sorgu planını zorlamak ve zorlamamak ve görüntüyü yenilemek için düğmeler kullanılabilir.

Bekleme kategorileri, doğası gereği benzer farklı bekleme türlerini kümeleyerek birleştiriyor. Farklı bekleme kategorileri sorunu çözmek için farklı bir izleme analizi gerektirir, ancak aynı kategorideki bekleme türleri çok benzer sorun giderme deneyimlerine yol açar ve etkilenen sorgunun beklemelerin üzerine sağlanması, bu tür araştırmaların çoğunu başarıyla tamamlamak için eksik parça olacaktır.

Sorgu Deposu'nda bekleme kategorilerini kullanıma sunmadan önce ve sonra iş yükünüzle ilgili daha fazla içgörü elde etmenize yönelik bazı örnekler aşağıda verilmiştir:

Önceki deneyim Yeni deneyim Eylem
Veritabanı başına yüksek RESOURCE_SEMAPHORE bekleme sayısı Sorgu Deposu'nda belirli sorgular için yüksek bellek beklemeleri Sorgu Deposu'nda en çok bellek tüketen sorguları bulun. Bu sorgular büyük olasılıkla etkilenen sorguların ilerleme durumunu geciktiriyor. Bu sorgular veya etkilenen sorgular için MAX_GRANT_PERCENT sorgu ipucu kullanmayı göz önünde bulundurun.
Veritabanı başına yüksek LCK_M_X bekleme sayısı Belirli sorgular için Sorgu Deposu'nda Yüksek Kilit beklemeleri Etkilenen sorgular için sorgu metinlerini denetleyin ve hedef varlıkları belirleyin. Sık yürütülen ve/veya süresi yüksek olan aynı varlığı değiştiren diğer sorguları Sorgu Deposu'na bakın. Bu sorguları tanımladıktan sonra eşzamanlılığı geliştirmek için uygulama mantığını değiştirmeyi veya daha az kısıtlayıcı bir yalıtım düzeyi kullanmayı göz önünde bulundurun.
Veritabanı başına yüksek PAGEIOLATCH_SH bekleme süresi Belirli sorgular için Sorgu Deposu'nda yüksek arabellek G/Ç beklemeleri Sorgu Deposu'nda çok sayıda fiziksel okuma içeren sorguları bulun. Sorgular yüksek GÇ bekleme süreleriyle eşleşiyorsa, taramalar yerine arama yaparak ve böylece sorguların GÇ yükünü en aza indirerek temel varlığa bir dizin eklemeyi göz önünde bulundurun.
Veritabanı başına fazla SOS_SCHEDULER_YIELD bekleme süresi Sorgu Deposu'nda belirli sorgular için yüksek CPU beklemeleri Sorgu Deposu'nda en çok CPU kullanan sorguları bulun. Yüksek CPU eğiliminin, yüksek CPU beklemeleriyle bağıntılı olduğu, etkilenen sorguları bunlar arasında belirleyin. Bu sorguları iyileştirmeye odaklanın; bir plan regresyonu veya belki de eksik bir dizin olabilir.

Yapılandırma seçenekleri

Sorgu Deposu parametrelerini yapılandırmaya yönelik kullanılabilir seçenekler için bkz. ALTER DATABASE SET seçenekleri (Transact-SQL) .

Sorgu Deposu'nun geçerli seçeneklerini belirlemek için sys.database_query_store_options görünümünü sorgulayın. Değerler hakkında daha fazla bilgi için bkz. sys.database_query_store_options.

Transact-SQL deyimlerini kullanarak yapılandırma seçeneklerini ayarlama hakkında örnekler için bkz. Seçenek Yönetimi.

Not

Azure Synapse Analytics için Sorgu Deposu diğer platformlarda olduğu gibi etkinleştirilebilir ancak ek yapılandırma seçenekleri desteklenmez.

Management Studio aracılığıyla veya aşağıdaki görünüm ve yordamları kullanarak Sorgu Deposu'yu görüntüleyin ve yönetin.

Sorgu Deposu işlevleri

İşlevler, Sorgu Deposu ile işlemlere yardımcı olur.

Query Store katalog görünümleri

Katalog görünümleri Sorgu Deposu hakkında bilgi sunar.

Query Store saklı yordamları

Saklı yordamlar Sorgu Deposu'nu yapılandırır.

sp_query_store_consistency_check (Transact-SQL)1

1 Aşırı senaryolarda Sorgu Deposu iç hatalar nedeniyle HATA durumuna girebilir. SQL Server 2017'den (14.x) itibaren, bu durum gerçekleşirse etkilenen veritabanındaki sp_query_store_consistency_check saklı yordamı yürütülerek Sorgu Deposu kurtarılabilir. actual_state_desc sütun açıklamasında açıklanan diğer ayrıntılar için bkz. sys.database_query_store_options.

Sorgu Deposu Bakımı

Sorgu Deposu'nun bakımı ve yönetimi için en iyi yöntemler ve öneriler şu makalede genişletilmiştir: Sorgu Deposuyönetmek için en iyi yöntemler.

Performans denetimi ve sorun giderme

Sorgu Deposu ile performans ayarlarına dalmak hakkında daha fazla bilgi için bkz. Sorgu Deposu ile performansı ayarlama.

Diğer performans konuları: