Один из моих серверов 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
в соответствии с рекомендациями? Что произошло?