Конференция проходила 2 и 3 ноября в Крокус-Сити. Расположение очень удобное, на МКАДе. Выход из метро прямо внутрь здания выставочного комплекса. С парковкой никаких проблем. Народу, по-моему, не прибавилось по сравнению с прошлым годом, хотя организаторы утверждают обратное. Доклады шли в пять потоков.

Далее — то, что удалось послушать, и что было интересно лично мне.

Deep dive into PostgreSQL internal statistics
Алексей Лесовский
PostgreSQL-Consulting LLC, PostgreSQL DBA

Речь о подсистеме сбора статистики, о том какая информация доступна для оценки эффективности PostgreSQL, как её получить, как интерпретировать и использовать полученную информацию, как найти узкие места, устранить их и повысить производительность PostgreSQL.

По ходу дела PostgreSQL занимается сбором статистики и информации о работе компонентов, что позволяет оценить эффективность всей системы и принять меры для повышения производительности. Однако, этой информации очень много и представлена она в большинстве случаев в неудобочитаемом виде. Например, статистика активности составляет 109 метрик (для версии 9.4). А есть еще статистика планировщика.

Кроме того, большинство метрик представлены счетчиками, и получать исторические срезы проблематично.

К тому же, у PostgreSQL нет нативного инструмента для работы с собственной статистикой. Зато много сторонних, каждый из которых — вещь в себе.

Тем не менее, с помощью несложных sql-запросов можно в консоли получать практически всю необходимую информацию. В презентации к докладу есть хорошие рабочие примеры.

Презентация доклада: [http://blog.postgresql-consulting.com/2015/11/deep-dive-into-postgresql-statistics.html]

Очень много примеров. Презентацию можно использовать как мануал.

Что еще можно почитать по теме:

http://www.blog.postgresql-consulting.com/
http://www.thislinux.org/

Сбор статистики в PostgreSQL
http://www.postgresql.org/docs/current/static/monitoring-stats.html

Функции DBA:
http://www.postgresql.org/docs/current/static/functions-admin.html

Полезные модули (в контрибах и не только):
http://www.postgresql.org/docs/current/static/pgstatstatements.html
http://www.postgresql.org/docs/current/static/pgstattuple.html
http://www.postgresql.org/docs/current/static/pgbuffercache.html
https://github.com/klando/pgfincore
https://github.com/dalibo/pg_stat_kcache

Набор утилит с примерами:
https://github.com/PostgreSQL-Consulting/pg-utils

Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в постгресе
Олег Бартунов, Александр Коротков, Федор Сигаев
Postgres Professional, ГАИШ МГУ

Сначала был цирк: люди на сцене изображали кластер, выполняющий распределенные транзакции. Передавали друг другу плакаты с цифрами, апдейтами, коммитами. Конечно же, на примере банковских операций. На глазах изумленной публики итоговые суммы (денег) не всегда соответствовали ожидаемым 🙂

На сегодняшний день:
Полноценный кластер с распределенными транзакциями есть только у Оракла. Для PostgreSQL есть несколько сторонних решений:

* XC -> XL — есть примеры боевого использования. XL вполне может служить прототипом для дальнейшего развития.
* GreenPlum — с транзакциями плохо, подходит больше для OLAP

Сообщество PostgreSQL включает в план выпуск Dirtributed Transaction Manager (DTM) в виде плагина, появится в версии 9.6 Это будет хорошо сочетаться с pg_shard.

Почитать про pg_shard можно вот тут:
https://www.citusdata.com/citus-products/pg-shard

Spilo, отказоустойчивый PostgreSQL кластер
Oleksii Kliukin
Zalando SE

Речь тут о не совсем кластере. Цель не горизонтальное масштабирование, а отказоустойчивость. Структура такая: мастер -> горячая реплика (синхронная) -> несколько асинхронных реплик. Распределенных транзакций нет. Вся эта конструкция называется Spilo (по-грузински — слон). Переключением ролей занимается patroni, в том числе и файловер.

Читать тут:
http://spilo.readthedocs.org/en/latest/
https://github.com/zalando/spilo

Мониторинг ожиданий в PostgreSQL
Ильдус Курбангалиев
Postgres Professional

Это к вопросу о том, что происходит, когда не происходит ничего.

В многоядерных высоконагруженных системах с высокой конкурентностью сложно определить, чем занят отдельный процесс PostgreSQL. Он может находится в ожидании локов высокого уровня, таких как локи таблиц, внутренних локов, используемых для синхронизации процессов, ввода-вывода и многих других.

Штатные представления PostgreSQL показывают только локи высокого уровня. Другие типы ожиданий требуют использования низкоуровневых утилит типа perf, systemtap и других. А это уже специальные знания, платформозависимость. В то же время другие СУБД enterprise уровня включают в себя инструменты для мониторинга ожиданий.

Автор разработал патч, который реализует мониторинг ожиданий в PostgreSQL. С минимальной настройкой (несколько конфигурационных параметров) этот патч показывает полную информацию о текущих ожиданиях в режиме реального времени и с небольшим оверхедом на всю систему. Этот патч уже работает на продакшен серверах Яндекса.

Называется этоpg_stat_wait и входит в составе контрибов. Функции: профилирование, история, трассировка. В докладе (и в презентации) много живых примеров.

Исходники здесь:
https://github.com/postgrespro/postgres/tree/waits_monitoring_94/contrib

Презентация здесь:
https://drive.google.com/file/d/0B7Gtubte1nPGNUdXRWlEekwtYVU/view

Что нового и полезного в PostgreSQL 9.5
Илья Космодемьянский
PostgreSQL-Consulting LLC

Выход версии 9.5 ожидается в декабре. Изменений будет много, но в докладе представлены только наиболее существенные (по мнению автора, которому вполне можно доверять).

* RLS (управление правами доступа к данным на уровне колонок) create policy …
* select * from table for update skip locked — пропускаются заблокированные строки
* insert … on conflict — что-то сделать при возникновении ошибки
* новые настройки wal (checkpoint_segments заменен на min_wal_size и max_wal_size — логичнее)
* recovery_target_action — pause,promote,shutdown — что сделать после восстановления базы
* BRIN-индексы, для больших таблиц (работают медленнее, чем b-tree, но быстрее перестраиваются)
* Улучшения производительности
* Расширенные OLAP-возможности

Из полезных советов — все-таки линукс (а не freebsd) и ядра новее 3.

Танцующий кластер. Практическое руководство дрессировщика PostgreSQL
Алексей Чижков
Дмитрий Васильев
Postgres Professional

По поводу отказоустойчивости кластера. Схема с мастером, синхронной репликой, и каким-то количеством асинхронных. Решение основано на стеке ClusterLabs (вроде как «из коробки»). Хитрость состояла в правильном выборе весовых коэффициентов — при любых отказах сумма голосов всегда должна получаться нечетной.

Ключевые слова: pg_rewind, ocf_heartbeat_pgsql

Читать:
http://clusterlabs.org/
http://habrahabr.ru/post/216067/

 

Добавить комментарий

Set your Twitter account name in your settings to use the TwitterBar Section.