Mengelola pemulihan database yang dipercepat
Berlaku untuk: SQL Server 2019 (15.x) dan versi yang lebih baru
Artikel ini mengajarkan Anda untuk mengaktifkan dan menonaktifkan accelerated database recovery (ADR) dengan Transact-SQL (T-SQL) di SQL Server 2019 (15.x) dan versi yang lebih baru, serta cara mengubah grup file penyimpanan versi persisten (PVS) yang digunakan oleh ADR.
Catatan
Di Azure SQL Database, Azure SQL Managed Instance, dan database SQL di Microsoft Fabric, pemulihan database terakselerasi (ADR) selalu diaktifkan. Jika Anda menghadapi masalah, seperti penggunaan penyimpanan yang tinggi oleh PVS atau lambannya pembersihan ADR, lihat Memecahkan masalah pemulihan database yang dipercepat atau hubungi Dukungan Azure.
Siapa yang harus mempertimbangkan pemulihan database yang dipercepat
Banyak pelanggan menemukan pemulihan database yang dipercepat (ADR) teknologi yang berharga untuk meningkatkan waktu pemulihan database.
Jika beban kerja database Anda sering mengalami skenario berikut, Anda mungkin mendapat manfaat dari ADR:
- Transaksi jangka panjang yang tidak dapat dihindari. Misalnya, dalam kasus di mana transaksi jangka panjang berisiko digulung balik, ADR dapat membantu.
- Transaksi aktif yang menyebabkan log transaksi tumbuh secara signifikan.
- Pemulihan database yang berlangsung lama yang berdampak pada ketersediaan database (misalnya, setelah restart SQL Server yang tidak terduga atau pengembalian transaksi manual).
ADR tidak disarankan untuk skenario berikut:
- Database yang menggunakan pencerminan database
tidak didukung. - Jika aplikasi Anda menggunakan modifikasi baris tunggal dalam transaksi individual dalam volume tinggi, beban kerja Anda mungkin tidak optimal untuk ADR. Pertimbangkan untuk mengelompokkan modifikasi dalam pernyataan yang mencakup beberapa baris jika memungkinkan, dan hindari volume transaksi DML berukuran kecil yang tinggi.
Mengaktifkan ADR
ADR nonaktif secara default dan tersedia dimulai dengan SQL Server 2019 (15.x).
Gunakan perintah Transact-SQL (T-SQL) berikut untuk mengaktifkan ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
Kunci database eksklusif diperlukan untuk mengaktifkan atau menonaktifkan ADR. Itu berarti perintah ALTER DATABASE
diblokir sampai semua sesi aktif hilang, dan bahwa sesi baru menunggu di belakang perintah ALTER DATABASE
. Jika penting untuk menyelesaikan operasi dan menghapus kunci, Anda dapat menggunakan klausa penghentian, WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT]
untuk membatalkan sesi aktif apa pun dalam database. Untuk informasi selengkapnya, lihat opsi ALTER DATABASE SET.
Menonaktifkan ADR
Gunakan perintah T-SQL berikut untuk menonaktifkan ADR:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO
Bahkan setelah ADR dinonaktifkan, mungkin ada versi yang disimpan dalam PVS yang masih dibutuhkan oleh sistem untuk pemulihan logis sampai semua transaksi aktif selesai.
Mengubah grup file PVS
Secara default, data penyimpanan versi persisten (PVS) ada di grup file PRIMARY
. Anda dapat memindahkan PVS ke grup file lain jika perlu. Misalnya, mungkin memerlukan lebih banyak ruang atau penyimpanan yang lebih cepat.
Untuk mengubah lokasi PVS ke grup file yang berbeda, ikuti langkah-langkah berikut:
Buat grup file untuk PVS dan tambahkan setidaknya satu file data ke grup file ini. Contohnya:
ALTER DATABASE [<db_name>] ADD FILEGROUP [VersionStoreFG]; GO ALTER DATABASE [<db_name>] ADD FILE ( NAME = N'VersionStoreFG', FILENAME = N'E:\DATA\VersionStore.ndf', SIZE = 8192 MB, FILEGROWTH = 64 MB ) TO FILEGROUP [VersionStoreFG];
Nonaktifkan ADR dengan perintah T-SQL berikut:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF; GO
Tunggu hingga semua versi yang disimpan dalam PVS dihapus.
Untuk mengaktifkan ADR menggunakan lokasi PVS baru, pertama-tama pastikan semua informasi versi telah dihapus menyeluruh dari lokasi PVS sebelumnya. Anda dapat memaksa terjadinya pembersihan dengan prosedur tersimpan sys.sp_persistent_version_cleanup.
EXEC sys.sp_persistent_version_cleanup [<db_name>];
Prosedur penyimpanan
sys.sp_persistent_version_cleanup
bersifat sinkron, yang berarti tidak akan selesai sampai semua informasi versi dibersihkan dari PVS (Prosedur Versi Singkat) saat ini. Setelah selesai, Anda dapat memastikan bahwa informasi versi telah dihapus dengan melakukan kueri sys.dm_tran_persistent_version_store_stats dan memeriksa nilaipersistent_version_store_size_kb
, seperti contoh berikut:SELECT DB_NAME(database_id), persistent_version_store_size_kb FROM sys.dm_tran_persistent_version_store_stats WHERE database_id = [MyDatabaseID];
Ketika nilai
persistent_version_store_size_kb
adalah0
, Anda bisa mengaktifkan ulang fitur ADR, dan PVS ditempatkan di grup file baru.Aktifkan ADR dan tentukan lokasi PVS baru dengan perintah T-SQL berikut:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
Memantau ukuran dari PVS
Setelah Anda mengaktifkan ADR pada database, pantau ukuran penyimpanan versi persisten (PVS) dan performa pembersihan PVS. Anda dapat memantau kesehatan PVS menggunakan metode yang ditemukan di Memecahkan masalah pemulihan database yang dipercepat.
Jika Anda memiliki beban kerja dengan volume perintah DML yang tinggi (INSERT
, UPDATE
, DELETE
, MERGE
), seperti OLTP bervolume tinggi, mungkin memerlukan periode istirahat/pemulihan bagi proses pembersihan PVS dalam mengklaim kembali ruang kosong. Biasanya, siklus operasi bisnis memungkinkan untuk saat ini, tetapi dalam beberapa skenario Anda mungkin ingin memulai proses pembersihan PVS secara manual untuk memanfaatkan pola aktivitas aplikasi.
Untuk mengaktifkan proses pembersihan PVS secara manual di antara pekerjaan atau selama waktu pemeliharaan, gunakanlah prosedur tersimpan sys.sp_persistent_version_cleanup.
Jika proses pembersihan PVS berjalan untuk waktu yang lama, Anda mungkin menemukan bahwa jumlah transaksi yang dibatalkan tumbuh, yang juga menyebabkan ukuran PVS meningkat. Gunakan DMV sys.dm_tran_aborted_transactions untuk melaporkan jumlah transaksi yang dibatalkan. Gunakan juga sys.dm_tran_persistent_version_store_stats untuk melaporkan waktu mulai/akhir pembersihan bersama dengan ukuran PVS.
Beban kerja yang menampilkan kueri yang berjalan lama menggunakan isolasi
SNAPSHOT
, atau isolasiREAD COMMITTED
ketika opsi databaseREAD_COMMITTED_SNAPSHOT
(RCSI) diaktifkan mungkin menunda pembersihan PVS untuk semua database pada instans mesin database, menyebabkan ukuran PVS bertambah. Untuk informasi selengkapnya, lihat bagian tentang pemindaian rekam jepret aktif yang panjang di Memecahkan masalah pemulihan database yang dipercepat.