Bagikan melalui


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.

Note

Di Azure SQL Database, Azure SQL Managed Instance, dan database SQL di Microsoft Fabric, pemulihan database terakselerasi (ADR) selalu diaktifkan. Jika Anda mengamati masalah, seperti penggunaan penyimpanan tinggi oleh PVS atau pembersihan ADR yang lambat, lihat Memantau dan memecahkan masalah pemulihan database yang dipercepat atau menghubungi 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 dan menghindari pemutaran kembali yang panjang.

Jika beban kerja database Anda sering mengalami skenario berikut, Anda dapat memperoleh manfaat dari ADR:

  • Transaksi jangka panjang yang tidak dapat dihindari. Misalnya, ADR membantu dalam kasus di mana transaksi yang berjalan lama berisiko digulung balik.
  • 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).

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 selesai, dan 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.

Jika mengaktifkan atau menonaktifkan ADR di tempdb, kunci database eksklusif tidak diperlukan dan klausul penghentian tidak boleh ditentukan. Namun, Mesin Database harus dimulai ulang agar perubahan diterapkan.

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. Jika menonaktifkan ADR di tempdb, Mesin Database perlu dimulai ulang agar perubahan diterapkan.

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:

  1. 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];
    
  2. Nonaktifkan ADR dengan perintah T-SQL berikut:

    ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
    GO
    
  3. 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. Dengan asumsi ADR dinonaktifkan dan setelah proses menyelesaikan, Anda dapat memverifikasi bahwa informasi versi dihapus dengan melakukan query pada sys.dm_tran_persistent_version_store_stats dan memeriksa nilai persistent_version_store_size_kb. Contohnya:

    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 sama dengan 0, Anda dapat mengaktifkan kembali ADR dan menempatkan PVS pada grup file baru.

  4. 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]);
    

Note

Memindahkan PVS ke grup file lain tidak didukung karena tempdb Anda tidak dapat menambahkan grup file di tempdb.

Memantau ukuran dari PVS

Setelah Anda mengaktifkan ADR dalam database, pantau ukuran performa penyimpanan versi persisten (PVS) dan pembersihan PVS. Untuk informasi selengkapnya, lihat Memantau dan memecahkan masalah pemulihan database yang dipercepat.