Один з моїх серверів PostgreSQL розміщує декілька (1-3) баз даних, які отримують постійний потік даних. Дані не особливо структуровані, вони становлять поточний час та різноманітність спостережуваних даних на конкретний момент. Швидкість передачі даних досить висока; він працює приблизно на один гігабайт на день для однієї бази даних, приблизно десяту частину - для іншої. Я не очікую, що цей показник зросте. Продуктивність читання є значно нижчим пріоритетом і наразі є прийнятною.
У журналах я маю це повідомлення:
LOG: checkpoints are occurring too frequently (15 seconds apart)
HINT: Consider increasing the configuration parameter "checkpoint_segments".
Наразі це значення встановлено на 16, що люб'язно pgtune
.
Які налаштування слід врахувати для покращення продуктивності запису? Я вважаю за краще зберегти якомога більше безпеки. Враховуючи об’єм даних, що надходять, я міг би прийняти втрату деяких недавніх даних у разі невдачі, доки основна частина даних була недоторканою.
Редагувати: я зараз використовую PostgreSQL 9.0, але планую оновити до 9.1. Я не публікую деталі обладнання, тому що, хоча я визнаю їх важливість, мені в кінцевому підсумку знадобиться зробити цю оптимізацію на кількох машинах з дуже різноманітним обладнанням. Якщо обладнання є важливим для відповіді, будь ласка, дайте мені загальну інформацію, щоб я міг застосувати відповідь до машин з різною конфігурацією обладнання.
checkpoint_segments
як рекомендували? Що сталося?