Zarządzanie przyspieszonym odzyskiwaniem bazy danych
Dotyczy: SQL Server 2019 (15.x) i nowsze wersje
W tym artykule pokazano, jak włączyć i wyłączyć przyspieszone odzyskiwanie bazy danych (ADR) za pomocą Transact-SQL (T-SQL) w systemie SQL Server 2019 (15.x) i nowszych wersjach, a także jak zmienić grupę plików magazynu wersji trwałych (PVS) używaną przez ADR.
Notatka
W Azure SQL Database, Azure SQL Managed Instance oraz SQL Database w Microsoft Fabric przyspieszone odzyskiwanie bazy danych (ADR) jest zawsze włączone. Jeśli zaobserwujesz problemy, takie jak wysokie użycie magazynu przez PVS lub powolne czyszczenie ADR, zobacz Monitorowanie i rozwiązywanie problemów z przyspieszonym odzyskiwaniem bazy danych lub skontaktuj się z pomocą techniczną Azure .
Kto powinien rozważyć przyspieszone odzyskiwanie bazy danych
Wielu klientów uważa, że przyspieszone odzyskiwanie bazy danych (ADR) jest cenną technologią w celu poprawy czasu odzyskiwania bazy danych.
Jeśli obciążenia bazy danych często napotykają następujące scenariusze, możesz skorzystać z reguły ADR:
- Długotrwałe transakcje, których nie można uniknąć. Na przykład w przypadkach, gdy długotrwałe transakcje są zagrożone wycofaniem, ADR może pomóc.
- Aktywne transakcje, które powodują znaczny wzrost dziennika transakcji.
- Długotrwałe odzyskiwanie bazy danych, które ma wpływ na dostępność bazy danych (na przykład po nieoczekiwanym ponownym uruchomieniu programu SQL Server lub ręcznym wycofaniu transakcji).
Jeśli aplikacja używa dużej liczby modyfikacji pojedynczych wierszy w poszczególnych transakcjach, obciążenie może nie być optymalne dla ADR. Rozważ przetwarzanie zbiorcze modyfikacji w instrukcjach wielowierszowych, jeśli to możliwe, i unikaj dużej liczby małych transakcji DML.
Włącz ADR
Reguła ADR jest domyślnie wyłączona i dostępna od programu SQL Server 2019 (15.x).
Aby włączyć reguły ADR, użyj następującego polecenia Transact-SQL (T-SQL):
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON;
Aby włączyć lub wyłączyć regułę ADR, należy włączyć lub wyłączyć wyłączną blokadę bazy danych. Oznacza to, że polecenie ALTER DATABASE
jest blokowane do momentu zakończenia wszystkich aktywnych sesji i że wszystkie nowe sesje czekają za poleceniem ALTER DATABASE
. Jeśli ważne jest ukończenie operacji i usunięcie blokady, możesz użyć klauzuli zakończenia, WITH ROLLBACK [IMMEDIATE | AFTER {number} SECONDS | NO_WAIT]
przerwać wszystkie aktywne sesje w bazie danych. Aby uzyskać więcej informacji, zobacz ALTER DATABASE USTAW opcje.
Wyłącz ADR
Aby wyłączyć reguły ADR, użyj następującego polecenia T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF;
GO
Nawet po wyłączeniu reguły ADR mogą istnieć wersje przechowywane w usłudze PVS, których system nadal potrzebuje do przywracania logicznego do momentu zakończenia wszystkich aktywnych transakcji.
Zmienianie grupy plików PVS
Domyślnie dane magazynu wersji trwałej (PVS) są przechowywane w grupie plików PRIMARY
. W razie potrzeby można przenieść pvS do innej grupy plików. Może to na przykład wymagać więcej miejsca lub szybszej pamięci.
Aby zmienić lokalizację serwera PVS na inną grupę plików, wykonaj następujące kroki:
Utwórz grupę plików dla pvS i dodaj co najmniej jeden plik danych do tej grupy plików. Na przykład:
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];
Wyłącz regułę ADR za pomocą następującego polecenia języka T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = OFF; GO
Poczekaj na usunięcie wszystkich wersji przechowywanych w trybie PVS.
Aby włączyć ADR przy użyciu nowej lokalizacji PVS, najpierw upewnij się, że wszystkie informacje o wersji zostały usunięte z poprzedniej lokalizacji PVS. Można wymusić czyszczenie za pomocą procedury składowanej sys.sp_persistent_version_cleanup.
EXEC sys.sp_persistent_version_cleanup [<db_name>];
Procedura składowana
sys.sp_persistent_version_cleanup
jest synchroniczna, co oznacza, że nie zostanie ukończona, dopóki wszystkie informacje o wersji nie zostaną wyczyszczone z bieżącego serwera PVS. Po zakończeniu procesu, zakładając, że ADR jest wyłączone, można zweryfikować usunięcie informacji o wersji, wykonując zapytanie sys.dm_tran_persistent_version_store_stats i badając wartośćpersistent_version_store_size_kb
. Na przykład:SELECT DB_NAME(database_id), persistent_version_store_size_kb FROM sys.dm_tran_persistent_version_store_stats WHERE database_id = [MyDatabaseID];
Gdy wartość
persistent_version_store_size_kb
jest0
, możesz ponownie włączyć ADR i umieścić PVS w nowej grupie plików.Włącz reguły ADR i określ nową lokalizację PVS za pomocą następującego polecenia języka T-SQL:
ALTER DATABASE [<db_name>] SET ACCELERATED_DATABASE_RECOVERY = ON (PERSISTENT_VERSION_STORE_FILEGROUP = [VersionStoreFG]);
Monitoruj rozmiar PVS
Po włączeniu funkcji ADR w bazie danych monitoruj rozmiar trwałego magazynu wersji (PVS) i wydajność jego oczyszczania. Aby uzyskać więcej informacji, zobacz sekcję Monitor i rozwiązywanie problemów z przyspieszonym odzyskiwaniem bazy danych.