Penyimpanan Kueri untuk replika sekunder
SQL Server 2022 (16.x)
Fitur Penyimpanan Kueri untuk replika sekunder memungkinkan fungsionalitas Penyimpanan Kueri yang sama pada beban kerja replika sekunder yang tersedia untuk replika utama. Ketika Penyimpanan Kueri untuk replika sekunder diaktifkan, replika mengirim informasi eksekusi kueri yang biasanya akan disimpan di Penyimpanan Kueri kembali ke replika utama. Replika utama kemudian menyimpan data ke disk dalam Penyimpanan Kuerinya sendiri. Intinya, ada satu Penyimpanan Kueri yang dibagikan antara replika utama dan semua sekunder. Penyimpanan Kueri ada di replika utama dan menyimpan data untuk semua replika bersama-sama. Saat ini, Penyimpanan Kueri untuk replika sekunder tersedia dengan instans SQL Server 2022 (16.x) yang dikonfigurasi dalam grup ketersediaan.
Penting
Penyimpanan Kueri untuk replika sekunder adalah fitur pratinjau . Ini tidak ditujukan untuk penyebaran produksi. Lihat: Catatan rilis SQL Server 2022 (16.0).
Anda harus mengaktifkan bendera pelacakan 12606 sebelum Anda dapat mengaktifkan Penyimpanan Kueri untuk replika sekunder. Untuk mengaktifkan bendera pelacakan:
- Di Windows, luncurkan SQL Server Configuration Manager.
- Dalam daftar SQL Server Services, klik kanan pada layanan instans SQL Server untuk instans SQL Server 2022 (16.x). Pilih Properti.
- Pilih tab Mulai Parameter . Di bidang Tentukan parameter startup: , tambahkan nilai:
-T12606
dan pilih Tambahkan. - Layanan instans SQL Server harus dimulai ulang sebelum perubahan akan berlaku.
Mengaktifkan Penyimpanan Kueri untuk replika sekunder
Sebelum menggunakan Penyimpanan Kueri untuk replika sekunder pada instans SQL Server, Anda harus memiliki grup ketersediaan AlwaysOn. Kemudian, aktifkan Penyimpanan Kueri untuk replika sekunder menggunakan opsi ALTER DATABASE SET (Transact-SQL).
Jika Penyimpanan Kueri belum diaktifkan dan dalam mode READ_WRITE pada replika utama, Anda harus mengaktifkannya sebelum melanjutkan. Jalankan yang berikut ini untuk setiap database yang diinginkan pada replika utama:
ALTER DATABASE [Database_Name] SET QUERY_STORE = ON;
GO
ALTER DATABASE [Database_Name] SET QUERY_STORE
( OPERATION_MODE = READ_WRITE );
Untuk mengaktifkan Penyimpanan Kueri pada semua replika sekunder, sambungkan ke replika utama dan jalankan yang berikut ini untuk setiap database yang diinginkan. Saat ini, ketika Penyimpanan Kueri untuk replika sekunder diaktifkan, itu diaktifkan untuk semua replika sekunder.
ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE );
GO
Untuk menonaktifkan Penyimpanan Kueri pada semua replika sekunder, sambungkan ke replika utama dan jalankan yang berikut ini untuk setiap database yang diinginkan:
ALTER DATABASE [Database_Name]
FOR SECONDARY SET QUERY_STORE = OFF;
GO
Anda dapat memvalidasi bahwa Penyimpanan Kueri diaktifkan pada replika sekunder dengan menyambungkan ke database pada replika sekunder dan menjalankan yang berikut ini:
SELECT desired_state, desired_state_desc, actual_state, actual_state_desc, readonly_reason
FROM sys.database_query_store_options;
GO
Contoh hasil berikut dari kueri sys.database_query_store_options menunjukkan bahwa Penyimpanan Kueri dalam status READ_CAPTURE_SECONDARY untuk sekunder. Dari readonly_reason
8
menunjukkan bahwa kueri dijalankan terhadap replika sekunder. Hasil ini menunjukkan bahwa Penyimpanan Kueri telah berhasil diaktifkan pada replika sekunder.
desired_state | desired_state_desc | actual_state | actual_state_desc | readonly_reason |
---|---|---|---|---|
4 | READ_CAPTURE_SECONDARY | 4 | READ_CAPTURE_SECONDARY | 8 |
Setelah diaktifkan, Anda dapat menggunakan sys.query_store_replicas untuk memverifikasi kesehatan Penyimpanan Kueri pada replika sekunder.
Untuk menonaktifkan Penyimpanan Kueri untuk replika sekunder, sambungkan ke database pada replika utama dan jalankan kode berikut:
ALTER DATABASE CURRENT
FOR SECONDARY SET QUERY_STORE = OFF;
GO
Rangkaian replika
Saat ini, ketika Penyimpanan Kueri untuk replika sekunder diaktifkan, itu diaktifkan untuk semua replika sekunder.
Set replika didefinisikan sebagai semua replika yang tidak disebutkan namanya yang berbagi peran (primer, sekunder, geo sekunder, geo primer), atau sebagai replika bernama individu. Data yang disimpan tentang kueri dapat dianalisis sebagai beban kerja berdasarkan set replika. Penyimpanan Kueri untuk replika menyediakan kemampuan untuk memantau dan menyesuaikan performa beban kerja unik baca-saja yang mungkin dijalankan terhadap replika sekunder.
Pertimbangan performa untuk Penyimpanan Kueri untuk replika sekunder
Saluran yang digunakan oleh replika sekunder untuk mengirim informasi kueri kembali ke replika utama adalah saluran yang sama yang digunakan untuk menjaga replika sekunder tetap terbarui. Data disimpan dalam tabel yang sama pada replika utama yang digunakan Penyimpanan Kueri untuk kueri yang dijalankan pada replika utama, yang menyebabkan ukuran Penyimpanan Kueri bertambah.
Dengan demikian, ketika sistem berada di bawah beban yang signifikan, Anda mungkin melihat beberapa perlambatan karena saluran kelebihan beban. Selanjutnya, masalah pengambilan kueri adhoc yang sama yang ada untuk Penyimpanan Kueri hari ini akan berlanjut untuk beban kerja yang dijalankan pada replika sekunder. Pelajari selengkapnya tentang cara Menyimpan data yang paling relevan di Penyimpanan Kueri.
Baca juga
- OPSI ALTER DATABASE SET (Transact-SQL)
- sys.database_query_store_options (T-SQL)
- sys.query_store_replicas
- sys.query_store_plan_forcing_locations (T-SQL)
- sys.sp_query_store_force_plan (T-SQL)