Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk: SQL Server 2025 (17.x)
Azure SQL Database
Dengan statistik yang bertahan, replika utama mempertahankan informasi statistik sebagai statistik permanen, yang dapat dikirim ke semua replika sekunder. Proses ini terjadi secara otomatis tanpa memerlukan intervensi manual. Mekanisme persistensi statistik menggunakan Kueri Store untuk infrastruktur replika sekunder yang terbaca.
Query Store untuk replika sekunder yang bisa dibaca tersedia di SQL Server 2025 (17.x) dan Azure SQL Database.
Penyimpanan Kueri untuk replika sekunder yang dapat dibaca aktif secara default di SQL Server 2025 (17.x) dan Azure SQL Database.
Background
Pada replika sekunder yang dapat dibaca, statistik juga dapat dibuat secara otomatis ketika opsi statistik pembuatan otomatis diaktifkan, tetapi statistik tersebut bersifat sementara dan menghilang saat instans dimulai ulang. Saat statistik pada database baca-saja atau rekam jepret baca-saja hilang atau basi, Mesin Database membuat dan mempertahankan statistik sementara di tempdb.
Ketika Mesin Database membuat statistik sementara, nama statistik ditambahkan dengan akhiran _readonly_database_statistic untuk membedakan statistik sementara dari statistik permanen. Akhiran _readonly_database_statistic dicadangkan bagi statistik yang dihasilkan oleh SQL Server. Alasan bahwa pendekatan ini diambil adalah untuk mengatasi beban kerja yang dijalankan terhadap replika sekunder yang dapat dibaca yang mungkin memerlukan statistik berbeda yang tidak ada pada replika utama.
Statistik sementara yang dibuat pada replika sekunder tetap hanya terlihat oleh replika yang menghasilkannya. Replika utama tidak pernah secara langsung mengakses objek statistik sementara ini dan hanya mengetahui objek statistik permanen setelah persistensi. Ketika statistik sementara dipertahankan ke replika utama, statistik tersebut tersedia untuk semua replika dalam grup ketersediaan melalui mekanisme sinkronisasi.
Tampilan katalog dukungan
Untuk mendukung perbandingan pembuatan atau pembaruan statistik antara sekunder dan primer, dan untuk membantu memahami di mana statistik dibuat, tiga kolom baru telah ditambahkan ke sys.stats tampilan katalog:
| Nama kolom | Jenis Data | Description |
|---|---|---|
replica_role_id |
tinyint |
1 = Utama, 2 = Sekunder, 3 = Geo Sekunder, 4 = Geo HA Sekunder |
replica_role_desc |
nvarchar(60) | Utama, Sekunder, Geo Sekunder, Geo HA Sekunder |
replica_name |
sysname | Nama instans replika dalam grup ketersediaan.
NULL untuk replika utama |
Kolom ini melacak kepemilikan dan asal statistik di seluruh siklus hidup persistensi. Saat replika sekunder membuat statistik sementara dan diteruskan ke replika utama, kolom replica_role_id dan replica_name mengidentifikasi replika asal. Jika statistik permanen ini kemudian diperbarui pada replika primer, kepemilikan ditransfer ke replika primer, seperti yang ditunjukkan dalam kolom ini.
Perilaku persistensi statistik
Ketika statistik sementara dipertahankan dari replika sekunder ke primer, beberapa perilaku penting terjadi: Statistik sementara pada replika sekunder tidak secara otomatis dihapus setelah persistensi. Kueri yang awalnya memicu pembuatan statistik sementara ini terus menggunakannya hingga kueri mengalami kompilasi ulang atau replika dimulai ulang. Ini berarti versi sementara dan permanen dari statistik yang sama dapat hidup berdampingan sementara.
Pengoptimal tidak mempertimbangkan kepemilikan replika saat menentukan apakah akan menggunakan statistik. Ini mengevaluasi semua statistik yang tersedia berdasarkan cakupan kolom dan perkiraan selektivitas. Informasi replika dipertahankan terutama untuk tujuan pelacakan dan pemecahan masalah.
Skenario penting terjadi ketika statistik permanen yang dibuat dari statistik sementara menjadi basi. Jika modifikasi data yang signifikan terjadi pada kolom utama yang memengaruhi dalam statistik tersebut, statistik permanen mungkin dianggap basi. Saat kueri pada replika sekunder mereferensikan kolom ini, replika sekunder memperbarui statistik berdasarkan pandangan datanya sendiri, memperlihatkan modifikasi yang telah diaplikasikan melalui proses redo.
Singkatnya, persistensi tidak menghapus kemampuan sekunder untuk menyegarkan statistik kedaluarsa; ini hanya menambahkan mekanisme untuk berbagi statistik di seluruh replika.
Observability
"Event yang Diperpanjang"
persisted_stats_operation(Saluran operasional) dinaikkan untuk peristiwa enqueued, dequeued, processed, dan failed. Ini dapat berguna untuk memantau apakah pesan statistik tidak dapat disimpan pada sistem utama, atau jika ada ketertarikan untuk mengamati fasilitas pemrosesan pesan. Statistik sementara tetap tersimpan di tempdb pada replika sekunder sementara proses latar belakang mencoba mengirimkan pesan statistik jika terdapat masalah komunikasi antara replika utama dan sekunder.
Contoh pesan kesalahan terkait yang dapat dicatat ke ERRORLOG
- 9131: Fitur dinonaktifkan selama startup SQL.
- 9136: Tabel atau indeks dihilangkan/dimodifikasi.
- 9137: Skema berubah sejak transaksi rekam jepret dimulai; Pengulangan.
- 9139: Statistik terlalu besar untuk dikirim ke server utama.
Kueri berikut dapat memperlihatkan beberapa statistik pada tabel, termasuk statistik yang dipertahankan dari replika sekunder:
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;
Pertimbangan
Statistik yang dipertahankan untuk fitur replika sekunder yang dapat dibaca diaktifkan secara default selama opsi statistik pembuatan otomatis diaktifkan serta opsi konfigurasi lingkup database READABLE_SECONDARY_TEMPORARY_STATS_AUTO_CREATE dan READABLE_SECONDARY_TEMPORARY_STATS_AUTO_UPDATE diaktifkan, yang merupakan konfigurasi default. Tidak ada konfigurasi cakupan database untuk mengaktifkan dan menonaktifkan fitur.