Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Note
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ą, aby poprawić czas odzyskiwania bazy danych i uniknąć długotrwałych wycofywania.
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 ADR pomaga w sytuacjach, gdy długotrwałe transakcje są zagrożone wycofaniem.
- 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 korzysta z dużej liczby modyfikacji pojedynczych wierszy w ramach poszczególnych transakcji, może się okazać, że obciążenie nie jest 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, odwołaj się do ALTER DATABASE SET options.
W przypadku włączania lub wyłączania reguły ADR w systemie tempdbnie jest wymagana wyłączna blokada bazy danych, a klauzula zakończenia nie powinna być określona. Należy jednak ponownie uruchomić aparat bazy danych, aby zmiany zaczęły obowiązywać.
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. W przypadku wyłączenia reguły ADR w systemie tempdbwymagane jest ponowne uruchomienie aparatu bazy danych, aby zmiany zaczęły obowiązywać.
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. 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; GOPoczekaj 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_cleanupjest 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. 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_kbjest0, 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]);
Note
Przenoszenie PVS do innej grupy plików nie jest obsługiwane w tempdb, ponieważ nie można dodawać grup plików w tempdb.
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.