Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Applies to: SQL Server 2022 (16.x) ve sonraki sürümleri
Azure SQL Database
Azure SQL Managed Instance
Okunabilir ikincil çoğaltmalar için Query Store, ikincil çoğaltmalarda çalışan iş yükleri için Query Store içgörüler sağlar. İkincil çoğaltmalar etkinleştirildiğinde, verilerin Query Store kalıcı hale getirildiği ve tüm çoğaltmalarda görünür hale getirildiği birincil çoğaltmaya sorgu yürütme bilgilerini (çalışma zamanı ve bekleme istatistikleri gibi) akışla gönderir.
Uyarı
Okunabilir ikincil çoğaltmalar için sorgu deposu şu anda tüm SQL Database Engine platformlarında önizleme aşamasındadır.
Availability
okunabilir ikincil kopyalar için Query Store, SQL Server 2025 (17.x) ile kullanılabilir hale geliyor ve bunu Her zaman güncel güncelleştirme ilkesi ile Azure SQL Database ve Azure SQL Managed Instance üzerinde de bulabilirsiniz. SQL Server 2022 (16.x) için, okunabilir ikincil çoğaltmalar için Query Store özelliğini kullanabilmek amacıyla izleme bayrağı 12606'nın etkinleştirilmesi gerekir.
Aşağıdaki tabloda, okunabilir ikincil öğeler için Sorgu deposunun kullanılabilirliği ve etkin durumu özetlemektedir.
| Platform | Mevcut | Varsayılan olarak etkin |
|---|---|---|
| Azure SQL Database | Evet1 | Evet (her zaman etkin) |
| Microsoft Fabric'da SQL veritabanı | Yes | Evet (her zaman etkin) |
| Azure SQL Yönetilen ÖrnekAUTD | Yes | Evet (her zaman etkin) |
| Azure SQL Yönetilen Örnek2025 | Hayı | Hayı |
| Azure SQL Yönetilen Örnek2022 | Hayı | Hayı |
| SQL Server 2025 (17.x) | Yes | Hayır (veritabanı başına etkinleştirilebilir) |
| SQL Server 2022 (16.x) | Hayır2 | Hayı |
1 Okunabilir ikinciller için sorgu deposu şu anda Azure SQL Database Hiper Ölçek hizmet katmanında kullanılamaz.
2 Okunabilir ikinciller için Sorgu Deposu, SQL Server 2022 (16.x) için sınırlı önizlemede kalır ve bu nedenle üretimde desteklenmez ve varsayılan olarak devre dışı bırakılır. Yalnızca SQL Server 2022'de (16.x) okunabilir ikinciller için Query Store etkinleştirmek için, birincil ve tüm okunabilir ikincil çoğaltmalarda 12606 izleme bayrağının etkinleştirilmesi gerekir. İzleme bayrağı 12606 SQL Server 2022 (16.x) tabanlı üretim dağıtımlarına yönelik değildir. Daha fazla bilgi için bkz. SQL Server 2022 sürüm notları.
Desteklenen yüksek kullanılabilirlik senaryoları
SQL Server 2025 (17.x) örneğinde okunabilir ikincil replikalar için Query Store'u kullanmadan önce bir Always On kullanılabilirlik grubu yapılandırılmalıdır.
Azure SQL Database için, okunabilir ikincil çoğaltmalar için Query Store aşağıdaki hizmet katmanlarını destekler:
- Etkin coğrafi çoğaltma veya yük devretme grubu yapılandırmasıyla genel amaçlı (yerleşik yüksek kullanılabilirlik çoğaltması yoktur; ikincil destek için coğrafi çoğaltma veya yük devretme grubu yapılandırması gerektirir)
- Premium (yerleşik yüksek kullanılabilirlik kopyalarını içerir; aktif coğrafi çoğaltma veya yük devretme grupları da desteklenir)
- İş açısından kritik (yerleşik yüksek kullanılabilirlik replikalarını içerir; etkin coğrafi çoğaltma veya yük devretme grupları da desteklenir)
Azure SQL Managed Instance için Always-up-to-date ilkesiyle, okunabilir ikincil çoğaltmalar için Query Store aşağıdaki hizmet katmanlarını destekler:
- Yük devretme grubuyla genel amaçlı (yerleşik yüksek kullanılabilirlik çoğaltmaları yoktur; ikincil destek için yük devretme grubu yapılandırması gerektirir)
- Kritik öneme sahip (yerleşik yüksek erişilebilirlik kopyalarını içerir)
Okunabilir ikincil çoğaltmalar için Query Store'u etkinleştirin
Query Store henüz etkinleştirilmemişse ve birincil çoğaltmada READ_WRITE modundaysa, devam etmeden önce etkinleştirmeniz gerekir. Birincil çoğaltmada istenen her veritabanı için aşağıdaki betiği çalıştırın:
ALTER DATABASE [Database_Name]
SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE);
Tüm okunabilir ikincil çoğaltmalarda Query Store'u etkinleştirmek için, birincil çoğaltmaya bağlanın ve özelliği kullanmak üzere listeye eklenecek her veritabanı için aşağıdaki betiği çalıştırın.
ALTER DATABASE [Database_Name]
FOR SECONDARY
SET QUERY_STORE = ON
(OPERATION_MODE = READ_WRITE);
Uyarı
SQL Server Management Studio (SSMS) 21 sürümünden önce, FOR SECONDARY söz dizimi geçerlidir ancak IntelliSense tarafından tanınmaz. SQL Server 2022'de SSMS IntelliSense, FOR SECONDARY söz dizimini geçerli olarak tanımaz, ancak geçerlidir.
İkincil çoğaltmalar için otomatik plan düzeltmeyi etkinleştirme
İçin geçerlidir: SQL Server 2022 (16.x) ve sonraki sürümleri, Azure SQL Database.
İkincil çoğaltmalar için Query Store'u etkinleştirdikten sonra, isteğe bağlı olarak otomatik ayarlamayı etkinleştirerek otomatik plan düzeltme özelliğinin ikincil çoğaltmalardaki planları zorlamasına izin verebilirsiniz. Bu, sorgu iyileştiricinin ikincil çoğaltmalardaki yürütme planı regresyonlarından kaynaklanan sorgu performansı sorunlarını otomatik olarak tanımlamasını ve düzeltmesini sağlar.
İkincil çoğaltmalar için otomatik plan düzeltmesini etkinleştirmek için birincil çoğaltmaya bağlanın ve istenen her veritabanı için aşağıdaki betiği yürütebilirsiniz:
ALTER DATABASE [Database_Name]
FOR SECONDARY
SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON);
İkincil çoğaltmalar için Query Store'u devre dışı bırak
İkincil replikalar için Query Store özelliğini tüm ikincil replikalarda devre dışı bırakmak için, master replikasındaki primary veritabanına bağlanın ve istenen her veritabanı için aşağıdaki betiği çalıştırın:
ALTER DATABASE [Database_Name]
FOR SECONDARY
SET QUERY_STORE = ON
(OPERATION_MODE = READ_ONLY);
İkincil çoğaltmalarda Query Store'un etkin olup olmadığını doğrulayın.
İkincil çoğaltmadaki veritabanına bağlanarak secondary çoğaltmada Query Store etkinleştirildiğini doğrulayabilir ve aşağıdaki T-SQL deyimini yürütebilirsiniz:
SELECT desired_state_desc,
actual_state_desc,
readonly_reason
FROM sys.database_query_store_options;
sys.database_query_store_options katalog görünümü sorgulandığında elde edilen sonuçlar, Query Store'un gerçek durumunun READ_CAPTURE_SECONDARY ve readonly_reason8 olduğunu göstermelidir.
desired_state_desc |
actual_state_desc |
readonly_reason |
|---|---|---|
READ_CAPTURE_SECONDARY |
READ_CAPTURE_SECONDARY |
8 |
Açıklamalar
Terminoloji
Çoğaltma kümesi, veritabanının okuma/yazma çoğaltması (birincil) ve mantıksal birim olarak ele alınan bir veya daha fazla salt okunur çoğaltma (ikincil) olarak tanımlanır. Bu bağlamdaki bir rol , belirli bir çoğaltmanın rolünü ifade eder. Bir replika, birincil replika olarak hizmet ettiğinde, hem veri değişikliklerini gerçekleştirebilen hem de okuma etkinliğinde bulunabilen bir okuma/yazma replikası olarak işlev görür. Bir kopya yalnızca salt okunur etkinlik gerçekleştirecek şekilde yapılandırıldığında, ikincil bir rolde (ikincil, coğrafi ikincil, coğrafi yüksek erişilebilirlik ikincil) hizmet eder. Roller planlı veya plansız yük devretme olayları aracılığıyla değişebilir; bu durumda birincil bir ikincil veya tam tersi olabilir.
Şu anda desteklenen roller şunlardır:
- Primary
- Secondary
- Coğrafi ikincil
- Coğrafi HA ikincil
- Adlandırılmış Replika
Nasıl çalışır?
Sorgular hakkında depolanan veriler, iş yükü olarak rol temelinde analiz edilebilir. Okunabilir ikincil çoğaltmalar için Query Store, ikincil çoğaltmalarda yürütülebilecek benzersiz, salt okunur iş yüklerinin performansını izleme olanağı sağlar. Veriler rol düzeyinde toplanır. Örneğin, SQL Server dağıtılmış kullanılabilirlik grupları yapılandırması şunlardan oluşabilir:
Birincil kopya, Kullanılabilirlik Grubu 1'in (AG1) parçası
İki yerel ikincil replika, ayrıca AG1'in bir parçası.
Ayrı bir kullanılabilirlik grubunun (AG2) parçası olan başka bir konumdaki uzak birincil çoğaltma. SQL Server terimlerle genel iletici olarak da adlandırılır ancak okunabilir ikincil çoğaltmalar için Query Store özelliği, coğrafi olarak dağıtılmış bir ikincil çoğaltma olduğu varsayılarak bunu
Geo secondaryçoğaltması olarak tanır ve buna başvurur.
AG1 ve AG2, AG1'in ikincil çoğaltmalarından birinde salt okunur iş yükü yürütürken salt okunur bağlantılara izin verecek şekilde yapılandırılırsa, Query Store yürütme istatistikleri AG1'in birincil çoğaltmasına gönderilir ve veriler AG2'deki genel iletici de dahil olmak üzere tüm ikincil çoğaltmalara geri gönderilmeden önce secondary rolünden oluşturulan veriler olarak toplanır ve kalıcı hale gelir. AG2'nin birincil kopyasına yönelik ayrı bir iş yükü yürütüldüğünde, küresel yönlendirici aracılığıyla verileri AG1'in birincil çoğaltma kopyasına geri gönderilir ve Geo secondary rolünden üretilen veriler gibi kalıcı hale getirilir.
Gözlemlenebilirlik perspektifinden bakıldığında sys.query_store_runtime_stats sistem kataloğu görünümü, yürütme istatistiklerinin kaynağı olan rolü belirlemeye yardımcı olmak için genişletilir. Bu görünümle sys.query_store_replicas sistem kataloğundaki görünüm arasında, rolün daha anlaşılır bir ismini sağlayabilecek bir ilişki vardır. SQL Server'da replica_name sütunu NULL'dir. Ancak, replica_name adlandırılmış bir çoğaltma varsa ve salt okunur iş yükleri için kullanılıyorsa, bu sütun Hiper Ölçek hizmet katmanı için doldurulur.
Bir T-SQL sorgusu örneği, son 8 saat boyunca tüm replikalardan CPU kaynaklarını kullanan ilk 50 sorguya dair genel bir analiz sağlamak için kullanılabilir.
-- Top 50 queries by CPU across all replicas in the last 8 hours
DECLARE @hours AS INT = 8;
SELECT TOP 50 qsq.query_id,
qsp.plan_id,
CASE qrs.replica_group_id WHEN 1 THEN 'PRIMARY' WHEN 2 THEN 'SECONDARY' WHEN 3 THEN 'GEO SECONDARY' WHEN 4 THEN 'GEO HA SECONDARY' ELSE CONCAT('NAMED REPLICA_', qrs.replica_group_id) END AS replica_type,
qsq.query_hash,
qsp.query_plan_hash,
SUM(qrs.count_executions) AS sum_executions,
SUM(qrs.count_executions * qrs.avg_logical_io_reads) AS total_logical_reads,
SUM(qrs.count_executions * qrs.avg_cpu_time / 1000.0) AS total_cpu_ms,
AVG(qrs.avg_logical_io_reads) AS avg_logical_io_reads,
AVG(qrs.avg_cpu_time / 1000.0) AS avg_cpu_ms,
ROUND(TRY_CAST (SUM(qrs.avg_duration * qrs.count_executions) AS FLOAT) / NULLIF (SUM(qrs.count_executions), 0) * 0.001, 2) AS avg_duration_ms,
COUNT(DISTINCT qsp.plan_id) AS number_of_distinct_plans,
qsqt.query_sql_text
FROM sys.query_store_runtime_stats_interval AS qsrsi
INNER JOIN sys.query_store_runtime_stats AS qrs
ON qrs.runtime_stats_interval_id = qsrsi.runtime_stats_interval_id
INNER JOIN sys.query_store_plan AS qsp
ON qsp.plan_id = qrs.plan_id
INNER JOIN sys.query_store_query AS qsq
ON qsq.query_id = qsp.query_id
INNER JOIN sys.query_store_query_text AS qsqt
ON qsq.query_text_id = qsqt.query_text_id
WHERE qsrsi.start_time >= DATEADD(HOUR, -@hours, GETUTCDATE())
GROUP BY qsq.query_id, qsq.query_hash, qsp.query_plan_hash, qsp.plan_id, qrs.replica_group_id, qsqt.query_sql_text
ORDER BY SUM(qrs.count_executions * qrs.avg_cpu_time / 1000.0) DESC, AVG(qrs.avg_cpu_time / 1000.0) DESC;
SQL Server Management Studio (SSMS) 21 ve sonraki sürümlerdeki Query Store raporları, çeşitli çoğaltma kümeleri/rolleri arasında Query Store verileri görüntülemenin bir yolunu sağlayan Replica açılan listesini sağlar. Ayrıca, Object gezgini görünümünde, Query Store düğümü, eğer okunabilir bir ikincil kopyaya bağlıysa, Query Store'un geçerli durumunu (READ_CAPTURE) yansıtır.
Azure SQL Database'da okunabilir ikincil çoğaltmaların telemetrisi için Query Store
Şunlar için geçerlidir: Azure SQL Veritabanı
Azure tanılama ayarları aracılığıyla Query Store runtime statistics akışı yapılırken, telemetri verilerinin çoğaltma kaynağını belirlemeye yardımcı olmak için iki sütun mevcuttur.
-
is_primary_b: Verilerin birincil çoğaltmadan mı (true) yoksa ikincil çoğaltmadan mı (false) kaynaklandığını gösteren Boole değeri -
replica_group_id: Çoğaltma rolüne karşılık gelen bir tamsayı
Bu sütunlar, çoğaltma kümeleri arasında iş yüklerini analiz ederken ölçümleri ve performans verilerini kesinleştirmek için gereklidir. Query Store çalışma zamanı istatistiklerini Log Analytics, Event Hubs veya Azure Storage'a aktarmak için tanılama ayarlarını yapılandırırken, sorgularınızın ve panolarınızın bu sütunları çoğaltma rolüne göre verileri doğru bir şekilde segmentlere ayırmasını sağladığına emin olun. Tanılama ayarlarını ve kullanılabilir ölçümleri yapılandırma hakkında daha fazla bilgi için bkz. Azure Monitor'da Tanılama ayarları.
Önemli
Query Performance Insight for Azure SQL Database (QPI)does not şu anda replica_group_id kavramını destekler. Panoda görüntülenen veriler, tüm replika kaynaklarından çalışma zamanı ve bekleme istatistikleri verilerini birleştirir.
Okunabilir ikincil çoğaltmalar için Query Store'da performansla ilgili dikkat edilmesi gereken hususlar
İkincil çoğaltmalar tarafından sorgu bilgilerini birincil çoğaltmaya geri göndermek için kullanılan kanal, ikincil çoğaltmaları güncel tutmak için kullanılan kanalla aynıdır. Burada channel ne anlama gelmektedir?
Kullanılabilirlik grubu (HADR) yapılandırmasında, çoğaltmalar birincil ve ikincil çoğaltmalar arasında günlük blokları, onaylar ve durum iletilerini taşıyan özel bir aktarım katmanı kullanarak birbirleriyle eşitlenir. Bu, veri tutarlılığı ve yük devretme hazırlığı sağlar.
Okunabilir ikincil çoğaltmalar için Query Store etkinleştirildiğinde ayrı bir ağ uç noktası oluşturmaz. Bunun yerine, mevcut aktarım katmanı üzerinde yeni bir mantıksal iletişim yolu oluşturur:
Azure SQL Database (Hiper Ölçek olmayan), Azure SQL Managed Instance ve SQL Server için bu, yüksek kullanılabilirlik ve olağanüstü durum kurtarma (HADR) Always On aktarım katmanını kullanır.
Azure SQL Database Hyperscale için Uzak Blob G/Ç aktarım katmanı olarak adlandırılan farklı bir aktarım katmanı kullanılır. Uzak Blob G/Ç taşıma katmanı, hesaplama düğümleri ile Günlük Hizmeti/Sayfa Sunucuları arasındaki iletişim kanalını oluşturur. Uzak Blob G/Ç aktarım katmanı, günlük kayıtlarını ve veri sayfalarını taşımak için güvenilir, şifrelenmiş bir kanal sağlar.
Bu yöntem, aynı şifrelenmiş oturumu kullanarak, normal günlük kayıt trafiğiyle birlikte, sorgu metni, planlar, çalışma zamanı/bekleme istatistikleri gibi Query Store yürütme verilerini çoklayarak işler. Özelliğin kendi yakalama ve alma kuyrukları vardır ve bu kuyruklar herhangi bir çoğaltmanın perspektifinden sorgulanarak sys.database_query_store_internal_state görünümü ile görüntülenebilir.
SELECT pending_message_count,
messaging_memory_used_mb
FROM sys.database_query_store_internal_state;
İkincil çoğaltmalardaki veriler birincildeki aynı Query Store tablolarında kalıcı hale getirilir ve bu da depolama gereksinimlerini artırabilir. Yoğun yük altında, aktarım kanalında gecikme veya geri basınç gözlemleyebilirsiniz. Birincil Query Store'da uygulanan ad hoc sorgu yakalama sınırlamaları, ikincil çoğaltmalar için de geçerlidir. Query Store boyutu ve yakalama ilkelerini yönetme hakkında daha fazla bilgi ve kılavuz için bkz. Query Store içindeki en ilgili verileri tutma.
Negatif sorgu kimliği/plan kimliği görünürlüğü
Negatif kimlikler, sorguların/planların birincil çoğaltmaya aktarılmadan önce ikincil çoğaltmalarda bellek içi geçici yer tutucuları olarak kullanıldığını gösterir.
Query Store verileri, okunabilir ikincil kopyalardan birincil sunucuya kalıcı olarak yazılmadan önce, sorgular ve planlar, Query Store'un MEMORYCLERK_QUERYDISKSTORE_HASHMAP adlı yerel bellek içi gösteriminde geçici tanımlayıcılar alabilir. Sorgu ve plan kimlikleri, birincil replik yetkili bir tanımlayıcı atayana kadar negatif sayılar olarak görünebilir ve yer tutucu görevi görür. Bu, Query Store'un bir sorgunun yapılandırılmış capture modu gereksinimlerini karşıladığını saptamasından sonra gerçekleşir.
Özel yakalama ilkesi varsa, sistem kataloğu görünümünü sorgulayarak sys.database_query_store_options karşılanması gereken gereksinimleri gözden geçirebilirsiniz.
SELECT query_capture_mode_desc,
capture_policy_execution_count,
capture_policy_total_compile_cpu_time_ms,
capture_policy_total_execution_cpu_time_ms
FROM sys.database_query_store_options;
Sorgu yakalanmış olarak belirlendikten sonra çalışma zamanı/bekleme istatistikleri ve planı kalıcı hale gelebilir ve yerel geçici kimlikler pozitif kimliklerle değiştirilir. Bu ayrıca plan zorlama veya ipucu oluşturma özelliklerini kullanmanıza da olanak tanır.
İlgili içerik
- ALTER DATABASE SET seçenekleri (Transact-SQL)
- sys.query_store_replicas
- sys.query_store_plan_forcing_locations (Transact-SQL)
- sys.sp_query_store_force_plan (Transact-SQL)
- Query Store ipuçları
- Query Store Kullanım Senaryoları
- sys.database_query_store_options (Transact-SQL)
- İş yüklerini izlemek için Query Store ile en iyi uygulamalar
- Query Store'i yönetmek için en iyi uygulamalar
- Query Store'u kullanarak performansı optimize edin