Opisywanie rejestrowania zapisu z wyprzedzeniem

Ukończone

Po wprowadzeniu zmian w bazie danych, takich jak INSERTS lub DELETES, te zmiany są najpierw zapisywane w dzienniku, a następnie zapisywane w plikach danych na dysku. Ta operacja jest nazywana dziennikiem z wyprzedzeniem zapisu, ponieważ zmiany są zapisywane w dzienniku przed ich zatwierdzeniem w plikach danych. Jeśli problem, taki jak utrata zasilania, dziennik zawsze przechowuje najnowsze dane i może służyć do zapewnienia, że baza danych jest w stanie spójnym.

Drugą korzyścią jest to, że dzięki zapisaniu zmian w dzienniku najpierw zmiany w tabelach i indeksach mogą być zapisywane w partiach, a nie pojedynczo. Ten proces zmniejsza liczbę operacji zapisu na dysku wymaganych do aktualizowania tabel i indeksów. Zapisy w dzienniku są szybkie, ponieważ są wykonywane sekwencyjnie. Wolniejsze operacje zapisu w tabelach i indeksach można bezpiecznie wykonywać w partiach, ponieważ wszystkie dane można odzyskać z dziennika. W przypadku obciążeń, które zwykle obejmują wiele małych aktualizacji, wydajność jest większa.

Uwaga

W przypadku lokalnych implementacji bazy danych PostgreSQL plik dziennika jest przechowywany w katalogu pg_wal . Usługa Azure Database for PostgreSQL nie zapewnia dostępu do systemu plików, więc nie musisz martwić się o fizyczny magazyn pliku dziennika.

Istnieje kilka parametrów serwera, które umożliwiają sterowanie działaniem rejestrowania z wyprzedzeniem zapisu i optymalizowanie go pod kątem obciążenia:

  • commit_delay — opóźnienie między zatwierdzeniem transakcji a opróżnianie dziennika na dysku.
  • wal_buffers — liczba buforów strony dysku w pamięci udostępnionej na potrzeby rejestrowania z wyprzedzeniem zapisu (WAL).
  • max_wal_size — maksymalny rozmiar umożliwiający wzrost liczby wal przed wyzwoleniem automatycznego punktu kontrolnego.
  • wal_writer_delay — przedział czasu między opróżnieniami WAL wykonywanymi przez moduł zapisujący WAL.
  • wal_compression — czy w pliku WAL są kompresowane operacje zapisu pełnostronicowego.
  • wal_level — określa, ile informacji jest zapisywanych w wal. Dozwolone wartości to REPLICA lub LOGICAL.

Przywracanie do punktu w czasie

Głównym celem dziennika zapisu (WAL) jest zapewnienie spójności i trwałości bazy danych w przypadku awarii. Lokalna wersja bazy danych PostgreSQL umożliwia używanie dziennika jako archiwum, co umożliwia przywracanie do punktu w czasie przy użyciu ustawień konfiguracji archive_mode i archive_command.

Azure Database for PostgreSQL to usługa zarządzana, która nie zezwala na dostęp do bazowego systemu plików. Obejmuje to jednak automatyczne pełne kopie zapasowe serwera, w tym wszystkie bazy danych. Ta kopia zapasowa umożliwia ponowne utworzenie danych do punktu w czasie. Kopie zapasowe są zaplanowane automatycznie i są wykonywane raz dziennie. Jeśli chcesz przywrócić, możesz przywrócić maksymalnie liczbę dni, w których określono przechowywanie kopii zapasowych, maksymalnie 35 dni. Aby określić czas przechowywania kopii zapasowych dla:

  1. W witrynie Azure Portal przejdź do serwera elastycznego usługi Azure Database for PostgreSQL.
  2. W sekcji Przegląd wybierz konfigurację.
  3. W obszarze Kopie zapasowe znajdź pozycję Okres przechowywania kopii zapasowej (w dniach). Pasek suwaka umożliwia wybranie liczby dni przechowywania kopii zapasowych.
  4. Wybierz pozycję Zapisz , aby zachować zmiany.