Punkty kontrolne występują zbyt często podczas pg_restore

15

W PostgreSQL 9.2.2 (Windows 32 bity) mam pg_restorepolecenie, które systematycznie powoduje ostrzeżenia dziennika o częstotliwości punktu kontrolnego, na przykład:

LOG:  checkpoints are occurring too frequently (17 seconds apart)
HINT:  Consider increasing the configuration parameter "checkpoint_segments".

Baza danych ma rozmiar około 3,3 Gb z 112 tabelami / 160 widokami i przywraca w około 14 minut.

Czy to normalne, że zdarza się to podczas pg_restore?

Sébastien Clément
źródło

Odpowiedzi:

17

Nierzadko podczas przywracania całej bazy danych, ponieważ jest to wyjątkowo duża operacja. Jeśli zobaczysz to podczas normalnej pracy, rozważ zwiększenie ustawienia na checkpoint_segmentsstałe, podobnie jak wskazówki w komunikacie o błędzie.

Możesz mieć problem z ustawieniem checkpoint_segmentswyższego poziomu tuż przed przywróceniem, a następnie opuścić go ponownie. To jest nawet to, co sugeruje instrukcja (w tym wyjaśnienie) :

Tymczasowe zwiększenie checkpoint_segmentszmiennej konfiguracyjnej może również przyspieszyć ładowanie dużych danych. Jest tak, ponieważ ładowanie dużej ilości danych do PostgreSQL spowoduje, że punkty kontrolne będą występować częściej niż normalna częstotliwość punktów kontrolnych (określona przez checkpoint_timeoutzmienną konfiguracyjną). Ilekroć pojawia się punkt kontrolny, wszystkie brudne strony muszą zostać opróżnione na dysk. Zwiększając checkpoint_segmentstymczasowo podczas masowego ładowania danych, można zmniejszyć liczbę wymaganych punktów kontrolnych.

Powiązana odpowiedź z dodatkowymi szczegółami:

Postgres 9.5

Nadchodzące nowe wydanie ma bardziej inteligentne podejście. Cytując informacje o wersji beta :

Zastąpienie parametru konfiguracji checkpoint_segmentsz min_wal_size i max_wal_size(Heikki Linnakangas)

Umożliwia to przydzielenie dużej liczby plików WAL bez ich przechowywania, jeśli nie są potrzebne. W związku z tym wartość domyślna dla max_wal_size została zwiększona do 1GB.

Poza tym: liczba widoków jest mało istotna, nie zawierają one żadnych danych, tylko „przepis”, tj .: zapytanie i niektóre atrybuty widoku. W przypadku tego pytania liczy się tylko całkowity rozmiar pliku kopii zapasowej.

Erwin Brandstetter
źródło
Po ustawieniu checkpoint_segments na 30, więcej tych komunikatów nie pojawi się w logu. Dzięki.
Sébastien Clément