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.
Şunlar için geçerlidir: SQL Server 2025 (17.x)
Azure SQL Veritabanı
Okunabilir ikinciller için Sorgu Deposu SQL Server 2025 (17.x) ve Azure SQL Veritabanı'nda kullanılabilir ve okunabilir ikinciller için kalıcı istatistikler özelliği, Sorgu Deposu'nun okunabilir ikinciller için sahip olduğu altyapıyı kullanır.
Sql Server 2025 (17.x) ve Azure SQL Veritabanı'nda okunabilir ikincil öğeler için Sorgu Deposu varsayılan olarak açıktır .
Background
Okunabilir ikincil çoğaltmalarda, otomatik istatistik oluşturma seçeneği etkinleştirildiğinde istatistikler de otomatik olarak oluşturulabilir, ancak bu istatistikler geçicidir ve bir örnek yeniden başlatıldığında kaybolur. Salt okunur bir veritabanında veya salt okunur anlık görüntüde istatistikler eksik veya eski olduğunda, Veritabanı Altyapısı içinde tempdbgeçici istatistikler oluşturur ve korur.
Veritabanı Altyapısı geçici istatistikler oluşturduğunda, geçici istatistikleri kalıcı istatistiklerden ayırt etmek için istatistik adı son ekiyle _readonly_database_statistic eklenir. Sonek _readonly_database_statistic , SQL Server tarafından oluşturulan istatistikler için ayrılmıştır. Bu yaklaşımın benimsemiş olmasının nedeni, birincil çoğaltmada mevcut olmayan ayrı istatistikler gerektirebilecek okunabilir ikincil çoğaltmalara karşı yürütülen iş yüklerini ele almaktı.
İkincil çoğaltmalarda oluşturulan geçici istatistikler yalnızca bunları oluşturan çoğaltmada görünür durumda kalır. Birincil çoğaltma, bu geçici istatistik nesnelerine hiçbir zaman doğrudan erişmez ve kalıcılık sonrasında sadece kalıcı istatistik nesnesini tanır. Geçici istatistikler birincil çoğaltmada kalıcı hale geldiğinde, eşitleme mekanizması aracılığıyla kullanılabilirlik grubundaki tüm çoğaltmalar için kullanılabilir hale gelir.
Kalıcılık mekanizması, SQL Server 2022'de (16.x) kullanıma sunulan okunabilir ikincil altyapı için Sorgu Deposu'nu kullanır. İstatistik bilgileri, kalıcı istatistikler olarak kalıcı hale getirildiği birincil çoğaltmaya gönderilir ve ardından tüm ikincil çoğaltmalarla yeniden eşitlenir. Bu işlem el ile müdahale gerektirmeden otomatik olarak gerçekleşir.
Destek kataloğu görünümleri
İkincil ve birincil arasında istatistik oluşturma veya güncelleştirme karşılaştırmasını desteklemek ve istatistiklerin nerede oluşturulduğunu anlamaya yardımcı olmak için katalog görünümüne sys.stats üç yeni sütun eklenmiştir:
| Sütun adı | Veri Türü | Description |
|---|---|---|
replica_role_id |
tinyint |
1 = Birincil, 2 = İkincil, 3 = Coğrafi İkincil, 4 = Coğrafi HA İkincil |
replica_role_desc |
nvarchar(60) | Birincil, İkincil, Coğrafi İkincil, Coğrafi HA İkincil |
replica_name |
sysname | Kullanılabilirlik grubundaki replikaların örnek adı.
NULL birincil replika için |
Bu sütunlar, kalıcılık yaşam döngüsü boyunca istatistiklerin sahipliğini ve kaynağını izler. İkincil çoğaltma geçici istatistikler oluşturduğunda ve bunlar birincilde kalıcı hale geldiğinde, replica_role_id ve replica_name sütunları kaynak çoğaltmayı tanımlar. Bu kalıcı istatistikler daha sonra birincil replikada güncellenirse, mülkiyet birincile aktarılır ve bu durum sütunlarda yansıtılır.
İstatistik kalıcılığı özelliği
Geçici istatistikler ikincil çoğaltmadan birincil çoğaltmaya kalıcı hale geldiğinde birkaç önemli davranış oluşur: İkincil çoğaltmadaki geçici istatistikler kalıcılık sonrasında otomatik olarak kaldırılmaz. Başlangıçta bu geçici istatistiklerin oluşturulmasını tetikleyen sorgular, sorgu yeniden derlenene veya çoğaltma yeniden başlatılana kadar bunları kullanmaya devam eder. Bu, aynı istatistiklerin hem geçici hem de kalıcı sürümlerinin geçici olarak bir arada var olabileceği anlamına gelir.
İyileştirici, istatistiklerin kullanılıp kullanılmayacağını belirlerken replika sahipliğini dikkate almaz. Sütun kapsamı ve seçicilik tahminlerine göre kullanılabilir tüm istatistikleri değerlendirir. Kopya bilgileri, öncelikli olarak izleme ve sorun giderme amacıyla tutulur.
Önemli bir senaryo, geçici istatistiklerden oluşturulan kalıcı istatistikler eskidiğinde ortaya çıkar. Bu istatistiklerdeki sütunları etkileyen birincil sütunlarda önemli veri değişiklikleri gerçekleşirse, kalıcı istatistikler eski olarak kabul edilebilir. İkincil çoğaltmalardaki sorgular bu sütunlara başvurduğunda, ikincil, istatistikleri verilerin görünümüne göre güncelleştirir ve yineleme işlemiyle uygulanan değişiklikleri yansıtır.
Kısacası kalıcılık, ikincilin eski istatistikleri yenileme özelliğini kaldırmaz; yalnızca çoğaltmalar arasında istatistikleri paylaşmak için bir mekanizma ekler.
Observability
Genişletilmiş Olaylar
persisted_stats_operation (İşlem kanalı) enqueued, dequeued, processed ve failed olayları için oluşturulur. Bu, bir istatistik iletisinin birincil sistemde kalıcı hale getirilemediğini izlemek veya ileti işleme tesisini izlemekle ilgilenmek için yararlı olabilir. Geçici istatistikler ikincil çoğaltmalarda tempdb kalırken, bir arka plan işlemi birincil ve ikincil çoğaltmalar arasında bir iletişim sorunu varsa iletiyi göndermeyi yeniden denenir.
ERRORLOG'a günlüğe kaydedilebilecek ilgili hata iletileri örnekleri
- 9131: Özellik, SQL başlatma sırasında devre dışı bırakıldı.
- 9136: Tablo veya dizin bırakıldı/değiştirildi.
- 9137: Anlık görüntü işlemi başlatıldıktan sonra şema değişti; Yeni -den deneme.
- 9139: İstatistikler ana sunucuya gönderilemeyecek kadar büyük.
Aşağıdaki sorgu, ikincil çoğaltmalardan kalıcı istatistikler de dahil olmak üzere bir tablodaki istatistiklerin görünürlüğünü sağlayabilir:
SELECT sch.[name] AS SchemaName,
obj.[name] AS TableName,
s.[name] AS StatsName,
CASE WHEN s.stats_id >= 2 AND s.auto_created = 1 THEN 'AUTO_STATS'
WHEN s.stats_id >= 2 AND s.auto_created = 0 THEN 'USER_CREATED_STATS'
ELSE 'INDEX_STATS'
END AS type,
s.is_temporary,
CASE WHEN s.replica_name IS NULL
AND s.replica_role_desc = 'PRIMARY'
AND s.stats_id >= 2
AND s.auto_created = 1
THEN 'PRIMARY'
ELSE s.replica_name
END AS replica_name,
s.replica_role_id,
s.replica_role_desc
FROM sys.schemas AS sch
INNER JOIN sys.objects AS obj
ON sch.schema_id = obj.schema_id
INNER JOIN sys.stats AS s
ON obj.object_id = s.object_id
WHERE sch.[name] <> 'sys'
ORDER BY sch.[name], obj.[name], s.stats_id;
Değerlendirmeler
Otomatik istatistik oluşturma seçeneği ve READABLE_SECONDARY_TEMPORARY_STATS_AUTO_CREATE ile varsayılan yapılandırma olan READABLE_SECONDARY_TEMPORARY_STATS_AUTO_UPDATE veritabanı kapsamlı yapılandırma seçenekleri etkinleştirildiği sürece, okunabilir ikinciller için kalıcı istatistikler özelliği varsayılan olarak etkinleştirilir. Özelliği açmak veya kapatmak için veritabanı düzeyinde bir yapılandırma yoktur.