Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
Strona jest podstawową jednostką magazynu danych w programie SQL Server. Zakres jest kolekcją ośmiu stron fizycznie ciągłych. Zakresy pomagają efektywnie zarządzać stronami. W tym przewodniku opisano struktury danych używane do zarządzania stronami i zakresami we wszystkich wersjach programu SQL Server. Zrozumienie architektury stron i zakresów jest ważne podczas projektowania i opracowywania baz danych, które działają wydajnie.
Strony i zakresy
Podstawową jednostką magazynu danych w programie SQL Server jest strona. Miejsce na dysku przydzielone do pliku danych (.mdf lub ndf) w bazie danych jest logicznie podzielone na strony numerowane stale z zakresu od 0 do n. Operacje we/wy dysku są wykonywane na poziomie strony. Oznacza to, że program SQL Server odczytuje lub zapisuje całe strony danych.
Zakresy są kolekcją ośmiu stron fizycznych, które są używane do wydajnego zarządzania stronami. Wszystkie strony są zorganizowane w zakresy.
Strony
W regularnej książce cała zawartość jest zapisywana na stronach. Podobnie jak w przypadku książki, program SQL Server zapisuje wszystkie wiersze danych na stronach, a wszystkie strony danych mają taki sam rozmiar: 8 KB. W książce większość stron zawiera dane — główną zawartość książki — a niektóre strony zawierają metadane dotyczące zawartości (na przykład spis treści i indeks). Ponownie program SQL Server nie różni się: większość stron zawiera rzeczywiste wiersze danych, które były przechowywane przez użytkowników; są one nazywane stronami danych i stronami tekst/obraz (w specjalnych przypadkach). Strony indeksu zawierają odwołania do indeksu dotyczące miejsca, w którym znajdują się dane. Na koniec istnieją strony systemowe , które przechowują różne metadane dotyczące organizacji danych.
Każda strona rozpoczyna się od nagłówka 96-bajtowego używanego do przechowywania informacji systemowych o stronie. Te informacje obejmują numer strony, typ strony, ilość wolnego miejsca na stronie oraz identyfikator jednostki alokacji obiektu, który jest właścicielem strony.
W poniższej tabeli przedstawiono typy stron używane w plikach danych bazy danych programu SQL Server.
| Typ Page | Zawartość |
|---|---|
| Dane | Wiersze danych ze wszystkimi danymi, z wyjątkiem tekstu, ntextu, obrazu, nvarchar(max), varchar(max), varbinary(max)i danych xml , gdy tekst w wierszu jest ustawiony na ONwartość . |
| Index | Wpisy indeksu. |
| Tekst/obraz | Duże typy danych obiektów: tekst, ntext, obraz, nvarchar(max), varchar(max), varbinary(max)i dane xml . Kolumny o zmiennej długości, gdy wiersz danych przekracza 8 KB: varchar, nvarchar, varbinary i sql_variant. |
| Globalna Mapa Alokacji (GAM) Udostępniona globalna mapa alokacji (SGAM) |
Informacje o tym, czy zakresy są przydzielane. |
| Wolne miejsce na stronie (PFS) | Informacje na temat alokacji strony i wolnego miejsca dostępnego na stronach. |
| Mapa alokacji indeksu (IAM) | Informacje o zakresach używanych przez tabelę lub indeks na jednostkę alokacji. |
| Mapa zmieniona zbiorczo (BCM) | Informacje o zakresach zmodyfikowanych przez operacje zbiorcze od ostatniej BACKUP LOG instrukcji na jednostkę alokacji. |
| Różnicowa zmieniona mapa (DCM) | Informacje o zakresach, które uległy zmianie od ostatniej BACKUP DATABASE instrukcji na jednostkę alokacji. |
Uwaga / Notatka
Pliki dziennika nie zawierają stron. Zawierają one serię rekordów dziennika, które nie mają stałego rozmiaru.
Wiersze danych są przechowywane na stronie szeregowo, zaczynając od razu po nagłówku. Tabela przesunięcia wiersza rozpoczyna się na końcu strony, a każda tabela przesunięcia wiersza zawiera jeden wpis dla każdego wiersza na stronie. Każdy wpis przesunięcia wiersza przechowuje, jak daleko pierwszy bajt wiersza znajduje się od początku strony. W związku z tym funkcja tabeli przesunięcia wierszy polega na szybkim zlokalizowaniu wierszy na stronie przez program SQL Server. Wpisy w tabeli przesunięcia wiersza są w odwrotnej kolejności od sekwencji wierszy na stronie.
Obsługa dużych wierszy
Wiersze nie mogą obejmować stron; jednak części wiersza można przenosić poza stronę wiersza, więc wiersz może być bardzo duży. Maksymalna ilość danych i narzutów zawartych w jednym wierszu na stronie to 8060 bajtów. Nie obejmuje to danych przechowywanych w typie strony tekstowej/obrazu.
To ograniczenie jest złagodzone w przypadku tabel zawierających kolumny varchar, nvarchar, varbinary lub sql_variant . Gdy łączny rozmiar wiersza wszystkich kolumn stałych i zmiennych w tabeli przekracza ograniczenie 8060 bajtów, program SQL Server dynamicznie przenosi co najmniej jedną kolumnę o zmiennej długości do stron w jednostce alokacji ROW_OVERFLOW_DATA, począwszy od kolumny o największej szerokości.
Odbywa się to za każdym razem, gdy operacja wstawiania lub aktualizacji zwiększa całkowity rozmiar wiersza poza limitem 8060 bajtów. Po przeniesieniu kolumny do strony w jednostce alokacji ROW_OVERFLOW_DATA jest utrzymywany wskaźnik 24-bajtowy na oryginalnej stronie w jednostce alokacji IN_ROW_DATA. Jeśli kolejna operacja zmniejszy rozmiar wiersza, program SQL Server dynamicznie przenosi kolumny z powrotem do oryginalnej strony danych.
Zagadnienia dotyczące przepełnienia wiersza
Wiersz nie może znajdować się na wielu stronach i może przepełnić się, jeśli łączny rozmiar pól typu danych o zmiennej długości przekracza limit 8060 bajtów. Aby zilustrować, można utworzyć tabelę z dwiema kolumnami: jedną varchar(7000) i drugą varchar (2000). Pojedynczo żadna kolumna nie przekracza 8060 bajtów, ale w połączeniu może to zrobić, jeśli wypełniona jest cała szerokość każdej kolumny. Program SQL Server może dynamicznie przenosić kolumnę zmiennej varchar(7000) na strony w jednostce alokacji ROW_OVERFLOW_DATA. W przypadku łączenia kolumn typu varchar, nvarchar, varbinary lub sql_variant lub clR zdefiniowanych przez użytkownika kolumn typu, które przekraczają 8060 bajtów na wiersz, należy wziąć pod uwagę następujące kwestie:
Przenoszenie dużych rekordów na inną stronę odbywa się dynamicznie, ponieważ rekordy są wydłużane na podstawie operacji aktualizacji. Operacje aktualizacji, które skracają rekordy, mogą spowodować przeniesienie rekordów z powrotem do oryginalnej strony w jednostce alokacji IN_ROW_DATA.
Wykonywanie zapytań i wykonywanie innych operacji wyboru, takich jak sortowanie lub sprzężenia na dużych rekordach, które zawierają dane przepełnienia wiersza spowalnia przetwarzanie czasu przetwarzania, ponieważ te rekordy są przetwarzane synchronicznie zamiast asynchronicznie.
W związku z tym podczas projektowania tabeli z wieloma wartościami varchar, nvarchar, varbinary lub sql_variant lub kolumnami typu zdefiniowanymi przez użytkownika clR należy wziąć pod uwagę wartość procentową wierszy, które prawdopodobnie będą przepływać, oraz częstotliwość, z jaką dane przepełnienia mogą być odpytywane. Jeśli istnieje prawdopodobieństwo częstych zapytań dotyczących wielu wierszy danych przepełnienia wiersza, rozważ normalizację tabeli, aby niektóre kolumny zostały przeniesione do innej tabeli. Następnie można wykonać zapytanie w operacji asynchronicznej
JOIN.Długość poszczególnych kolumn musi nadal mieścić się w granicach 8000 bajtów dla kolumn varchar, nvarchar, varbinary lub sql_variant i CLR zdefiniowanych przez użytkownika. Tylko ich łączne długości mogą przekraczać limit wierszy 8060 bajtów tabeli.
Suma innych kolumn typu danych, w tym danych char i nchar , musi mieścić się w limicie 8060 bajtów wierszy. Duże dane obiektów są również wykluczone z limitu wierszy 8060 bajtów.
Klucz indeksu klastrowanego nie może zawierać kolumn varchar , które mają istniejące dane w jednostce alokacji ROW_OVERFLOW_DATA. Jeśli indeks klastrowany jest tworzony w kolumnie varchar , a istniejące dane są w jednostce alokacji IN_ROW_DATA, kolejne akcje wstawiania lub aktualizowania w kolumnie, które wypchną dane poza wierszem, zakończy się niepowodzeniem. Aby uzyskać więcej informacji na temat jednostek alokacji, zobacz Sql Server i Azure SQL index architecture and design guide (Architektura i projektowanie indeksów usługi Azure SQL).
Kolumny zawierające dane przepełnienia wiersza można dołączać jako kolumny klucza lub nieklucza indeksu nieklastrowanego.
Limit rozmiaru rekordu dla tabel korzystających z kolumn rozrzednych wynosi 8018 bajtów. Gdy przekonwertowane dane i istniejące dane rekordu przekraczają 8018 bajtów, zwracany jest błąd MSSQLSERVER 576 . Gdy kolumny są konwertowane między typami rozrzedzony i nieparzystowymi, aparat bazy danych przechowuje kopię bieżących danych rekordu. Spowoduje to tymczasowe podwojenia magazynu wymaganego dla rekordu.
Aby uzyskać informacje o tabelach lub indeksach, które mogą zawierać dane przepełnienia wiersza, użyj funkcji zarządzania dynamicznego sys.dm_db_index_physical_stats.
Zakresów
Zakresy to podstawowa jednostka, w której jest zarządzana przestrzeń. Zakres to osiem stron fizycznie ciągłych lub 64 KB. Oznacza to, że bazy danych programu SQL Server mają 16 zakresów na megabajt.
Program SQL Server ma dwa typy zakresów:
- Jednolite zakresy są własnością pojedynczego obiektu; wszystkie osiem stron w zakresie może być używane tylko przez obiekt będąc właścicielem.
- Mieszane zakresy są współużytkowane przez maksymalnie osiem obiektów. Każda z ośmiu stron w zakresie może być własnością innego obiektu.
Do programu SQL Server 2014 (12.x) aparat bazy danych nie przydziela całych zakresów do tabel z niewielką ilością danych. Nowa tabela lub indeks zazwyczaj przydziela strony z mieszanych zakresów. Gdy tabela lub indeks rośnie do momentu, w którym znajduje się osiem stron, następuje przełączenie w celu użycia jednolitych zakresów dla kolejnych alokacji. W przypadku utworzenia indeksu w istniejącej tabeli zawierającej wystarczającą liczbę wierszy do wygenerowania ośmiu stron w indeksie wszystkie alokacje indeksu są w jednolitych zakresach.
Począwszy od programu SQL Server 2016 (13.x), ustawieniem domyślnym dla większości alokacji w bazie danych użytkownika jest tempdb użycie jednolitych zakresów, z wyjątkiem alokacji należących do pierwszych ośmiu stron łańcucha tożsamości. Alokacje dla masterbaz danych , msdbi model nadal zachowują poprzednie zachowanie.
Uwaga / Notatka
W programie SQL Server, aż do i w tym wersji SQL Server 2014 (12.x), można użyć flagi śledzenia (TF) 1118, aby zmienić domyślną alokację na zawsze używać jednolitych rozmiarów. Aby uzyskać więcej informacji na temat tej flagi śledzenia, zobacz flaga śledzenia 1118.
Począwszy od programu SQL Server 2016 (13.x), funkcje udostępniane przez program TF 1118 są automatycznie włączone dla tempdb wszystkich baz danych użytkowników. W przypadku baz danych użytkowników to zachowanie jest kontrolowane przez SET MIXED_PAGE_ALLOCATION opcję ALTER DATABASE, z wartością domyślną ustawioną na OFF, a tf 1118 nie ma wpływu. Aby uzyskać więcej informacji, zobacz ALTER DATABASE SET options.
Począwszy od programu SQL Server 2012 (11.x), sys.dm_db_database_page_allocations funkcja systemowa może zgłaszać informacje o alokacji stron dla bazy danych, tabeli, indeksu i partycji.
Ważne
Funkcja sys.dm_db_database_page_allocations systemowa nie jest udokumentowana i może ulec zmianie. Zgodność nie jest gwarantowana.
Począwszy od programu SQL Server 2019 (15.x), funkcja systemowa sys.dm_db_page_info jest dostępna i zwraca informacje o stronie w bazie danych. Funkcja zwraca jeden wiersz zawierający informacje nagłówka ze strony, w tym object_idindex_id, i partition_id. Ta funkcja zastępuje potrzebę użycia DBCC PAGE w większości przypadków.
Zarządzanie alokacjami zakresów i wolnym miejscem
Struktury danych programu SQL Server, które zarządzają alokacjami zakresu i śledzą wolne miejsce, mają stosunkowo prostą strukturę. Ma to następujące korzyści:
Informacje o wolnym miejscu są gęsto zapakowane, więc stosunkowo niewiele stron zawiera te informacje.
Zwiększa to szybkość, zmniejszając liczbę odczytów dysku, które są wymagane do pobrania informacji o alokacji. Zwiększa to również prawdopodobieństwo, że strony alokacji pozostaną w pamięci i nie będą wymagały większej liczby operacji odczytu.
Większość informacji o alokacji nie jest połączona ze sobą. Upraszcza to konserwację informacji o alokacji.
Każdą alokację lub cofnięcie przydziału strony można wykonać szybko. Zmniejsza to rywalizację między współbieżnych zadań, które muszą przydzielać lub cofać przydział stron.
Zarządzanie alokacjami zakresów
Program SQL Server używa dwóch typów map alokacji do rejestrowania alokacji zakresów:
Global Allocation Map (GAM)
Strony GAM rejestrują zakresy przydzielone. Każda gam obejmuje 64 000 zakresów lub prawie 4 gigabajty (GB) danych. Gam ma 1 bit dla każdego zakresu w interwale, który obejmuje. Jeśli bit ma
1wartość , zakres jest wolny; jeśli bit to0, zostanie przydzielony zakres.Udostępniona globalna mapa alokacji (SGAM)
Strony SGAM rejestrują zakresy, które są obecnie używane jako zakresy mieszane, a także mają co najmniej jedną nieużywaną stronę. Każdy SGAM obejmuje 64 000 zakresów lub prawie 4 GB danych. SgAM ma 1 bit dla każdego zakresu w interwale, który obejmuje. Jeśli bit to
1, zakres jest używany jako zakres mieszany i ma bezpłatną stronę. Jeśli bit ma wartość0, zakres nie jest używany jako zakres mieszany lub jest to zakres mieszany, a wszystkie jego strony są używane.
Każdy zakres ma następujące wzorce bitów ustawione w gamie i SGAM na podstawie bieżącego użycia.
| Bieżące użycie zakresu | Ustawienie bitu GAM | Ustawienie bitu SGAM |
|---|---|---|
| Bezpłatna, nieużywana | 1 | 0 |
| Jednolity zakres lub pełny zakres mieszany | 0 | 0 |
| Zakres mieszany z bezpłatnymi stronami | 0 | 1 |
Powoduje to proste algorytmy zarządzania zakresem.
- Aby przydzielić jednolity zakres, aparat bazy danych wyszukuje gamę bitów
1i ustawia go na0wartość . - Aby znaleźć mieszany zakres z bezpłatnymi stronami, aparat bazy danych przeszukuje nieco SGAM
1. - Aby przydzielić mieszany zakres, aparat bazy danych wyszukuje gamę
1bitów, ustawia go na0, a następnie ustawia odpowiedni bit w SGAM na1wartość . - Aby cofnąć przydział zakresu, aparat bazy danych upewnia się, że bit GAM jest ustawiony na
1, a bit SGAM jest ustawiony na0.
Algorytmy używane wewnętrznie przez aparat bazy danych są bardziej zaawansowane niż to, co opisano w tym artykule, ponieważ aparat bazy danych równomiernie dystrybuuje dane w bazie danych. Jednak nawet rzeczywiste algorytmy są uproszczone, nie trzeba zarządzać łańcuchami informacji o alokacji zakresu.
Śledź wolne miejsce
Strony Wolnego miejsca na stronie (PFS) rejestrują stan alokacji każdej strony, niezależnie od tego, czy dana strona została przydzielona, oraz ilość wolnego miejsca na każdej stronie. PfS ma 1 bajt dla każdej strony, rejestrując, czy strona jest przydzielona, a jeśli tak, czy jest pusta, od 1 do 50 procent pełnych, od 51 do 80 procent pełnych, od 81 do 95 procent pełnych, lub od 96 do 100 procent pełnych.
Po przydzieleniu zakresu do obiektu aparat bazy danych używa stron PFS do rejestrowania, które strony w zakresie są przydzielane lub bezpłatne. Te informacje są używane, gdy aparat bazy danych musi przydzielić nową stronę. Ilość wolnego miejsca na stronie jest przechowywana tylko dla stron stosu i tekstu/obrazu. Jest on używany, gdy aparat bazy danych musi znaleźć stronę z wolnym miejscem dostępnym do przechowywania nowo wstawionego wiersza. Indeksy nie wymagają śledzenia wolnego miejsca na stronie, ponieważ punkt, w którym ma być wstawiony nowy wiersz, jest ustawiany przez wartości klucza indeksu.
Nowa strona PFS, GAM lub SGAM jest dodawana w pliku danych dla każdego dodatkowego zakresu, o który śledzi. W związku z tym po pierwszej stronie PFS jest dostępna nowa strona PFS 8088 i dodatkowe strony PFS w kolejnych 8088 interwałach stron. Aby zilustrować, identyfikator strony 1 jest stroną PFS, identyfikator strony 8088 jest stroną PFS, identyfikator strony 16176 jest stroną PFS itd.
Jest nowa strona GAM 64.000 zakresów po pierwszej stronie GAM i śledzi 64 000 zakresów po niej; sekwencja jest kontynuowana w odstępach 64 000 zakresów. Podobnie, jest nowa strona SGAM 64.000 zakresów po pierwszej stronie SGAM i dodatkowe strony SGAM w kolejnych 64.000 interwałów zakresu.
Poniższa ilustracja przedstawia sekwencję stron używanych przez aparat bazy danych do przydzielania zakresów i zarządzania nimi.
Zarządzanie miejscem używanym przez obiekty
Strona Mapa alokacji indeksu (IAM) mapuje zakresy w części 4 GB pliku bazy danych używanego przez jednostkę alokacji. Jednostka alokacji jest jednym z trzech typów:
IN_ROW_DATA
Przechowuje partycję sterta lub indeksu.
LOB_DATA
Przechowuje duże typy danych obiektów (LOB), takie jak xml, varbinary(max)i varchar(max).
ROW_OVERFLOW_DATA
Przechowuje dane o zmiennej długości przechowywane w kolumnach varchar, nvarchar, varbinary lub sql_variant , które przekraczają limit rozmiaru wiersza 8060 bajtów.
Każda partycja sterty lub indeksu zawiera co najmniej IN_ROW_DATA jednostkę alokacji. Może również zawierać LOB_DATA lub jednostkę alokacji ROW_OVERFLOW_DATA w zależności od schematu sterty lub indeksu.
Strona IAM obejmuje zakres 4 GB w pliku i jest taki sam zasięg jak strona GAM lub SGAM. Jeśli jednostka alokacji zawiera zakresy z więcej niż jednego pliku lub więcej niż jeden zakres 4 GB pliku, istnieje wiele stron IAM połączonych w łańcuchu tożsamości. W związku z tym każda jednostka alokacji ma co najmniej jedną stronę IAM dla każdego pliku, w którym ma zakresy. Może również istnieć więcej niż jedna strona IAM w pliku, jeśli zakres zakres zakresów pliku przydzielonego do jednostki alokacji przekracza zakres, który może rejestrować pojedyncza strona zarządzanie dostępem i tożsamościami.
Strony IAM są przydzielane zgodnie z wymaganiami dla każdej jednostki alokacji i znajdują się losowo w pliku. Widok sys.system_internals_allocation_units systemu wskazuje pierwszą stronę zarządzania dostępem i tożsamościami dla jednostki alokacji. Wszystkie strony zarządzanie dostępem i tożsamościami dla tej jednostki alokacji są połączone w łańcuchu IAM.
Ważne
Widok systemowy sys.system_internals_allocation_units jest przeznaczony tylko do użytku wewnętrznego i może ulec zmianie. Zgodność nie jest gwarantowana. Ten widok nie jest dostępny w usłudze Azure SQL Database.
Strona zarządzanie dostępem i tożsamościami zawiera nagłówek wskazujący początkowy zakres zakresów zamapowanych przez stronę zarządzanie dostępem i tożsamościami. Strona Zarządzanie dostępem i tożsamościami ma również dużą mapę bitową, w której każdy bit reprezentuje jeden zakres. Pierwszy bit na mapie reprezentuje pierwszy zakres w zakresie, drugi bit reprezentuje drugi zakres itd. Jeśli bit to 0, zakres, który reprezentuje, nie jest przydzielony do jednostki alokacji będącą właścicielem tożsamości. Jeśli bit ma 1wartość , zakres, który reprezentuje, zostanie przydzielony do jednostki alokacji, która jest właścicielem strony zarządzanie dostępem i tożsamościami.
Gdy aparat bazy danych musi wstawić nowy wiersz i nie ma dostępnego miejsca na bieżącej stronie, używa stron IAM i PFS do znalezienia strony do przydzielenia lub, dla sterta lub strony tekstowej/obrazu, strony z wystarczającą ilością miejsca do przechowywania wiersza. Aparat bazy danych używa stron IAM, aby znaleźć zakresy przydzielone do jednostki alokacji. W każdym zakresie aparat bazy danych wyszukuje strony PFS, aby sprawdzić, czy istnieje strona, która może być używana. Każda strona zarządzanie dostępem i tożsamościami i pfS obejmuje wiele stron danych, dlatego w bazie danych znajduje się kilka stron IAM i PFS. Oznacza to, że strony zarządzanie dostępem i tożsamościami i pfS są zazwyczaj w pamięci w puli programu SQL Server, dzięki czemu można je szybko przeszukiwać. W przypadku indeksów punkt wstawiania nowego wiersza jest ustawiany przez klucz indeksu, ale gdy potrzebna jest nowa strona, wystąpi opisany wcześniej proces.
Aparat bazy danych przydziela nowy zakres jednostce alokacji tylko wtedy, gdy nie może szybko znaleźć strony w istniejącym zakresie z wystarczającą ilością miejsca do przechowywania wstawionego wiersza.
Alokacja wypełnienia proporcjonalnego
Aparat bazy danych przydziela zakresy z tych dostępnych w grupie plików przy użyciu algorytmu alokacji proporcjonalnej wypełnienia . W tej samej grupie plików z dwoma plikami, jeśli jeden plik ma dwukrotnie wolne miejsce co drugi, dwie strony zostaną przydzielone z pliku z dostępnym miejscem dla każdej strony przydzielonej z drugiego pliku. Oznacza to, że każdy plik w grupie plików powinien mieć podobny procent używanego miejsca.
Śledzenie zmodyfikowanych zakresów
Program SQL Server używa dwóch wewnętrznych struktur danych do śledzenia zakresów zmodyfikowanych przez operacje kopiowania zbiorczego i zakresów zmodyfikowanych od ostatniej pełnej kopii zapasowej. Te struktury danych znacznie przyspieszają różnicowe kopie zapasowe. Przyspieszają również rejestrowanie operacji kopiowania zbiorczego, gdy baza danych korzysta z modelu odzyskiwania rejestrowanego zbiorczo. Podobnie jak strony GAM i SGAM, te struktury są mapami bitowymi, w których każdy bit reprezentuje jeden zakres.
Różnicowa zmieniona mapa (DCM)
Śledzi to zakresy, które uległy zmianie od ostatniej
BACKUP DATABASEinstrukcji. Jeśli bit dla zakresu to1, zakres został zmodyfikowany od ostatniejBACKUP DATABASEinstrukcji. Jeśli bit ma wartość0, zakres nie został zmodyfikowany.Różnicowe kopie zapasowe odczytują tylko strony DCM, aby określić, które zakresy zostały zmodyfikowane. Znacznie zmniejsza to liczbę stron, które musi skanować różnicowa kopia zapasowa. Czas wykonywania różnicowej kopii zapasowej jest proporcjonalny do liczby zakresów zmodyfikowanych od ostatniej
BACKUP DATABASEinstrukcji, a nie ogólnego rozmiaru bazy danych.Mapa zmieniona zbiorczo (BCM)
Śledzi to zakresy, które zostały zmodyfikowane przez operacje rejestrowane zbiorczo od ostatniej
BACKUP LOGinstrukcji. Jeśli bit dla zakresu to1, zakres został zmodyfikowany przez operację rejestrowaną zbiorczo po ostatniejBACKUP LOGinstrukcji. Jeśli bit ma wartość0, zakres nie został zmodyfikowany przez operacje rejestrowane zbiorczo.Mimo że strony BCM są wyświetlane we wszystkich bazach danych, są one istotne tylko wtedy, gdy baza danych korzysta z modelu odzyskiwania rejestrowanego zbiorczo. W tym modelu odzyskiwania, po
BACKUP LOGwykonaniu elementu, proces tworzenia kopii zapasowej skanuje elementy BCM pod kątem zakresów, które zostały zmodyfikowane. Następnie obejmuje te zakresy w kopii zapasowej dziennika. Spowoduje to odzyskanie operacji rejestrowanych zbiorczo, jeśli baza danych zostanie przywrócona z kopii zapasowej bazy danych i sekwencja kopii zapasowych dziennika transakcji. Strony programu BCM nie są istotne w bazie danych korzystającej z prostego modelu odzyskiwania, ponieważ nie są rejestrowane żadne operacje rejestrowane zbiorczo. Nie są one istotne w bazie danych korzystającej z pełnego modelu odzyskiwania, ponieważ ten model odzyskiwania traktuje operacje rejestrowane zbiorczo jako w pełni zarejestrowane operacje.
Interwał między stronami DCM i stronami BCM jest taki sam jak interwał między stroną GAM i SGAM, 64 000 zakresów. Strony DCM i BCM znajdują się za stronami GAM i SGAM w pliku fizycznym w następujący sposób: