Работа с PostgreSQL: настройка и масштабирование
А. Ю. Васильев aka leopard
Creative Commons Attribution-Noncommercial 4.0 International
20102014
Работа с PostgreSQL: настройка и масштабирование
Введение
Настройка производительности
Введение
Не используйте настройки по умолчанию
Используйте актуальную версию сервера
Стоит ли доверять тестам производительности
Настройка сервера
Используемая память
Журнал транзакций и контрольные точки
Планировщик запросов
Сбор статистики
Диски и файловые системы
Перенос журнала транзакций на отдельный диск
CLUSTER
Утилиты для тюнинга PostgreSQL
Pgtune
pg_buffercache
Оптимизация БД и приложения
Поддержание базы в порядке
Использование индексов
Перенос логики на сторону сервера
Оптимизация конкретных запросов
Утилиты для оптимизации запросов
Заключение
Партиционирование
Введение
Теория
Практика использования
Настройка
Тестирование
Управление партициями
Важность «constraint_exclusion» для партиционирования
Заключение
Репликация
Введение
Потоковая репликация (Streaming Replication)
Введение
Установка
Настройка
Общие задачи
PostgreSQL Bi-Directional Replication (BDR)
Slony-I
Введение
Установка
Настройка
Общие задачи
Устранение неисправностей
Londiste
Введение
Установка
Настройка
Общие задачи
Устранение неисправностей
Bucardo
Введение
Установка
Настройка
Общие задачи
Репликация в другие типы баз данных
RubyRep
Введение
Установка
Настройка
Устранение неисправностей
Заключение
Шардинг
Введение
PL/Proxy
Установка
Настройка
Все ли так просто?
Postgres-XC
Архитектура
Установка
Распределение данных и масштабируемость
Таблицы и запросы к ним
Высокая доступность (HA)
Ограничения
Заключение
HadoopDB
Установка и настройка
Заключение
Заключение
PgPool-II
Введение
Давайте начнем!
Установка pgpool-II
Файлы конфигурации
Настройка команд PCP
Подготовка узлов баз данных
Запуск/Остановка pgpool-II
Ваша первая репликация
Настройка репликации
Проверка репликации
Ваш первый параллельный запрос
Настройка параллельного запроса
Настройка SystemDB
Установка правил распределения данных
Установка правил репликации
Проверка параллельного запроса
Master-slave режим
Streaming Replication (Потоковая репликация)
Онлайн восстановление
Streaming Replication (Потоковая репликация)
Заключение
Мультиплексоры соединений
Введение
PgBouncer
PgPool-II vs PgBouncer
Кэширование в PostgreSQL
Введение
Pgmemcache
Установка
Настройка
Проверка
Заключение
Заключение
Расширения
Введение
PostGIS
pgSphere
HStore
Пример использования
Заключение
PLV8
Скорость работы
Использование
Заключение
Pg_repack
Примеры
Заключение
Pg_prewarm
Заключение
Smlar
Похожесть
Расчет похожести
Smlar
Пример: поиск дубликатов картинок
Заключение
Multicorn
Пример
PostgreSQL 9.3+
Заключение
Pgaudit
Ltree
Почему Ltree?
Пример
Заключение
PostPic
Fuzzystrmatch
Tsearch2
OpenFTS
PL/Proxy
Texcaller
Pgmemcache
Prefix
Dblink
Заключение
Бэкап и восстановление PostgreSQL
Введение
SQL бэкап
SQL бэкап больших баз данных
Бекап уровня файловой системы
Непрерывное резервное копирование
Настройка
Утилиты для непрерывного резервного копирования
WAL-E
Barman
Заключение
Стратегии масштабирования для PostgreSQL
Введение
Суть проблемы
Проблема чтения данных
Методы решения
Проблема записи данных
Методы решения
Заключение
Советы по разным вопросам (Performance Snippets)
Введение
Советы
Размер объектов в базе данных
Размер самых больших таблиц
«Средний» count
Узнать значение по умолчанию у поля в таблице
Случайное число из диапазона
Алгоритм Луна
Выборка и сортировка по данному набору данных
Quine запрос который выводит сам себя
Ускоряем LIKE
Поиск дубликатов индексов
Размер и статистика использования индексов
Размер распухания (bloat) таблиц и индексов в базе данных
Введение
Данная книга не дает ответы на все вопросы по работе с PostgreSQL. Главное её задание показать возможности PostgreSQL, методики настройки и масштабируемости этой СУБД. В любом случае, выбор метода решения поставленной задачи остается за разработчиком или администратором СУБД.
Настройка производительности
Введение
Скорость работы, вообще говоря, не является основной причиной использования реляционных СУБД. Более того, первые реляционные базы работали медленнее своих предшественников. Выбор этой технологии был вызван скорее:
возможностью возложить поддержку целостности данных на СУБД;
независимостью логической структуры данных от физической.
Эти особенности позволяют сильно упростить написание приложений, но требуют для своей реализации дополнительных ресурсов.
Таким образом, прежде чем искать ответ на вопрос «как заставить РСУБД работать быстрее в моей задаче?», следует ответить на вопрос «нет ли более подходящего средства для решения моей задачи, чем РСУБД?» Иногда использование другого средства потребует меньше усилий, чем настройка производительности.
Данная глава посвящена возможностям повышения производительности PostgreSQL. Глава не претендует на исчерпывающее изложение вопроса, наиболее полным и точным руководством по использованию PostgreSQL является, конечно, официальная документация и официальный FAQ. Также существует англоязычный список рассылки postgresql-performance, посвящённый именно этим вопросам. Глава состоит из двух разделов, первый из которых ориентирован скорее на администратора, второй на разработчика приложений. Рекомендуется прочесть оба раздела: отнесение многих вопросов к какому-то одному из них весьма условно.