Назад | Перейти на главную страницу

Советы и хитрости PostgreSQL

Это вики-сайт сообщества для сбора различных знаний о PostgreSQL. Нет ничего слишком обычного или неясного. Публикуйте все, что вы знаете, что поможет другим максимально использовать эту базу данных.

Одна из первых полезных вещей, которые я узнал о postgres, - это некоторые из таблиц postgres, в которых хранится информация об экземпляре postgres, например:

 su - postgres
 psql
 SELECT * FROM pg_stat_activity;

Показывает много информации о текущих действиях в экземпляре postgres, то есть о том, какие клиенты подключены к нему, какие запросы они сейчас выполняют и как долго и т. Д.

Руководство по настройке производительности: http://anchor.com.au/hosting/dedicated/Tuning_PostgreSQL_on_your_Dedicated_Server

  • Никогда не используйте ПРАВИЛА.
  • Никогда не вызывайте представление изнутри.
  • Поймите, что избирательность в представлении - это не то же самое, что избирательность внутри представления.
  • В большинстве случаев виды - плохая идея, если они представляют собой нечто большее, чем тонкий слой фанеры.
  • Postgresql КОПИЯ хрупкая, меньше, чем раньше, но привыкните к использованию языка сценариев, если вы будете работать с большим количеством CSV.
  • Никогда не используйте VARCHAR. Он медленнее вставляется и больше хранится, чем ТЕКСТ. Не используйте его для защиты от вставок большого размера. Используйте его, только если вам нужен эффект CHAR () без пробелов.
  • Будьте осторожны с CTE, у них разные профили производительности.
  • PLPERL и PLPERLU - это лучше всего нарезанный хлеб.

Для новичков:

Не запускайте службу и не думайте, что она готова к работе прямо из коробки. Большинство установок имеют настройки по умолчанию для потребления памяти, которые заставляют службу работать так, как если бы она была на КПК. Вы захотите поднять эти цифры на что-то большее.

Если вы настраиваете настройку для выделенного сервера, я понял, что общее потребление памяти - как совместно используемой, так и для каждого процесса - не должно превышать от 1/3 до 1/2 объема памяти сервера. Причина этого в том, что PostgreSQL делает определенные предположения о том, как осуществляется доступ к данным. Одна из них заключается в том, что ваша ОС будет знать, как лучше выполнять кэширование файлов и блоков, чем она, поэтому вы захотите оставить оперативную память доступной для ОС для кэширования доступа к файловой системе.

Сигналы, на которые реагирует PostgreSQL (относится к более новым версиям). Спасибо Эвану Андерсону!

По общему мнению, ServerFault пока что JFS является журналируемой файловой системой, предпочтительной для движков баз данных, работающих на установках Linux.

Если я смогу найти другие рекомендации для BSD, я отредактирую их и опубликую здесь.