PostgreSQL в Яндексе:
история успеха №2
Владимир Бородин
events.yandex.ru/lib/talks/2382
Разработчик
Нужна небольшая
табличка, с транзакциями
Первые проблемы
5
Первые проблемы
〉Много мелких изменяющих запросов
〉Очень медленно
〉GDB показал, что виноват WALWriteLock
〉synchronous_commit = off снимает симптомы
〉commit_delay и commit_siblings не помогают
6
Первые решения
〉pg_xlog на отдельном массиве,
〉эта ФС смонтирована с nobarrier,
〉wal_sync_method = fsync
7
Стрельба без приложения
8
Прямо сейчас
9
Менеджер
Нам надо ещё 10 ТБ
положить
Детали
〉Хранить надо 30 дней
〉Чем старше данные, тем реже за ними приходят
〉Во все читающие запросы можно добавить время
11
Partitioning
Варианты
〉pg_part
〉pg_partman
〉partition magic
13
pg_partman
14
Обновление функции триггера на мастер-таблице
15
Перекладывание данных
с SSD на SATA
Варианты
〉ALTER TABLE foo SET TABLESPACE sata;
〉http://reorg.github.io/pg_repack/
17
Большое количество WAL’ов
18
Решение
〉Средствами БД победить не удалось
〉На помощь пришли cgroups
〉Ограничение на объём данных для
группы процессов
19
Решение
20
github.com/reorg/pg_repack/pull/34
Autovacuum to prevent wraparound
22
Autovacuum to prevent wraparound
23
Autovacuum to prevent wraparound
24
PostgreSQL
ERROR: database is not
accepting commands to
avoid wraparound data loss
in database "xivadb"
Autovacuum to prevent wraparound
〉Выключили throttling
〉Последовательный VACUUM таблиц на SATA
26
Бэкапы
27
http://www.postgresql.org/about/news/1566/
Barman 1.4.0
Запрос во все партиции
29
Запрос во все партиции
30
Решение
31
32
Вопросы?
34
Владимир Бородин
Системный администратор
Контакты
@man_brain
http://simply.name
+7 (495) 739 70 00, доб. 7255
d0uble@yandex-team.ru

2015.02.06 PostgreSQL в Яндексе: история успеха №2