Jeden z moich serwerów PostgreSQL obsługuje kilka (1–3) baz danych, które otrzymują stały strumień danych. Dane nie są specjalnie ustrukturyzowane, odpowiadają bieżącemu czasowi i różnorodności obserwowanych danych dla tej konkretnej chwili. Szybkość transmisji danych jest dość wysoka; dla jednej bazy danych to około gigabajta dziennie, a dla jednej dziesiątej około jednej dziesiątej. Nie oczekuję, że ta stopa wzrośnie. Wydajność odczytu ma znacznie niższy priorytet i jest obecnie akceptowalna.
W logach mam ten komunikat:
LOG: checkpoints are occurring too frequently (15 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".
Ta wartość jest obecnie ustawiona na 16, co jest możliwe dzięki uprzejmości pgtune
.
Jakie ustawienia powinienem rozważyć, aby poprawić wydajność zapisu? Wolałbym zachować jak najwięcej bezpieczeństwa. Biorąc pod uwagę ilość napływających danych, mogłem zaakceptować utratę niektórych ostatnich danych w wyniku awarii, o ile większość danych pozostała nienaruszona.
Edycja: Na razie korzystam z PostgreSQL 9.0, ale planuję aktualizację do wersji 9.1. Nie publikuję szczegółów dotyczących sprzętu, ponieważ chociaż potwierdzam ich znaczenie, ostatecznie będę musiał dokonać tej optymalizacji na kilku komputerach z bardzo zróżnicowanym sprzętem. Jeśli sprzęt jest niezbędny do udzielenia odpowiedzi, proszę podać mi ogólne informacje, aby móc zastosować odpowiedź na komputerach o różnych konfiguracjach sprzętowych.
checkpoint_segments
zgodnie z zaleceniami? Co się stało?