
- •Оглавление
- •Настройка производительности
- •Введение
- •Не используйте настройки по умолчанию
- •Используйте актуальную версию сервера
- •Стоит ли доверять тестам производительности
- •Настройка сервера
- •Используемая память
- •Журнал транзакций и контрольные точки
- •Планировщик запросов
- •Сбор статистики
- •Диски и файловые системы
- •Перенос журнала транзакций на отдельный диск
- •Примеры настроек
- •Среднестатическая настройка для максимальной производительности
- •Среднестатическая настройка для оконного приложения (1С), 2 ГБ памяти
- •Среднестатическая настройка для Web приложения, 2 ГБ памяти
- •Среднестатическая настройка для Web приложения, 8 ГБ памяти
- •Автоматическое создание оптимальных настроек: pgtune
- •Оптимизация БД и приложения
- •Поддержание базы в порядке
- •Использование индексов
- •Перенос логики на сторону сервера
- •Оптимизация конкретных запросов
- •Оптимизация запросов с помощью pgFouine
- •Заключение
- •Репликация
- •Введение
- •Slony-I
- •Введение
- •Установка
- •Настройка
- •Общие задачи
- •Устранение неисправностей
- •Londiste
- •Введение
- •Установка
- •Настройка
- •Общие задачи
- •Устранение неисправностей
- •Bucardo
- •Введение
- •Установка
- •Настройка
- •Общие задачи
- •RubyRep
- •Введение
- •Установка
- •Настройка
- •Устранение неисправностей
- •Заключение
- •Кластеризация БД
- •Введение
- •PL/Proxy
- •Установка
- •Настройка
- •Все ли так просто?
- •HadoopDB
- •Установка и настройка
- •Заключение
- •Заключение
- •PgPool-II
- •Введение
- •Давайте начнем!
- •Установка pgpool-II
- •Файлы конфигурации
- •Настройка команд PCP
- •Подготовка узлов базы данных
- •Запуск/Остановка pgpool-II
- •Ваша первая репликация
- •Настройка репликации
- •Проверка репликации
- •Ваш первый параллельный запрос
- •Настройка параллельного запроса
- •Настройка SystemDB
- •Установка правил распределения данных
- •Установка правил репликации
- •Проверка параллельного запроса
- •Master-slave режим
- •Онлайн востановление
- •Заключение
- •Мультиплексоры соединений
- •Введение
- •PgBouncer

5
Мультиплексоры соединений
5.1Введение
Мультиплексоры соединений(программы для создания пула коннектов) позволяют уменьшить накладные расходы на базу данных, когда огромное количество физических соединений тянет производительность PostgreSQL вниз. Это особенно важно на Windows, когда система ограничивает большое количество соединений. Это также важно для веб-приложений, где количество соединений может быть очень большим.
Программы, которые создают пулы соединений:
•PgBouncer
•Pgpool
Также некоторые администраторы PostgreSQL с успехом используют Memcached для уменьшения работы БД за счет кэширования данных.
5.2PgBouncer
Это мультиплексор соединений для PostgreSQL от компании Skype. Существуют три режима управления.
•Session Pooling. Наиболее «вежливый» режим. При начале сессии клиенту выделяется соединение с сервером; оно приписано ему в течение всей сессии и возвращается в пул только после отсоединения клиента.
•Transaction Pooling. Клиент владеет соединением с бакендом только в течение транзакции. Когда PgBouncer замечает, что транзакция завершилась, он возвращает соединение назад в пул.
•Statement Pooling. Наиболее агрессивный режим. Соединение с бакендом возвращается назад в пул сразу после завершения запроса. Транзакции с несколькими запросами в этом режиме не разрешены, так как они гарантировано будут отменены.
93

5.3.PgPool-II vs PgBouncer
Кдостоинствам PgBouncer относится:
•малое потребление памяти (менее 2 КБ на соединение);
•отсутствие привязки к одному серверу баз данных;
•реконфигурация настроек без рестарта.
Базовая утилита запускается так:
$pgbouncer [-d][-R][-v][-u user] <pgbouncer.ini>
Простой пример для конфига:
[databases]
template1 = host=127.0.0.1 port=5432 dbname=template1 [pgbouncer]
listen_port = 6543 listen_addr = 127.0.0.1 auth_type = md5 auth_file = userlist.txt logfile = pgbouncer.log pidfile = pgbouncer.pid admin_users = someuser
Нужно создать файл пользователей userlist.txt примерного содержания:"someusersame_password_as_in_server"
Админский доступ из консоли к базе данных pgbouncer:
$psql -h 127.0.0.1 -p 6543 pgbouncer
Здесь можно получить различную статистическую информацию с помощью команды SHOW.
5.3PgPool-II vs PgBouncer
Все очень просто. PgBouncer намного лучше работает с пулами соединений, чем PgPool-II. Если вам не нужны остальные фичи, которыми владеет PgPool-II (ведь пулы коннектов это мелочи к его функционалу), то конечно лучше использовать PgBouncer.
•PgBouncer потребляет меньше памяти, чем PgPool-II
•у PgBouncer возможно настроить очередь соединений
•в PgBouncer можно настраивать псевдо базы данных (на сервере они могут называтся по другому)
Хотя некоторые используют PgBouncer и PgPool-II совместно.
94