SlideShare a Scribd company logo
PGDAY’14
RUSSIA
PostgreSQL: архитектура, настройка и оптимизация
Илья Космодемьянский
ik@postgresql-consulting.com
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA PostgreSQL
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Почему
The world’s most advanced open source database
• Тому есть много причин
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Почему
The world’s most advanced open source database
• Тому есть много причин
• Но на самом деле можно считать, что речь идет о поддержке транзакций
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Вечная проблема
Счет A
Баланс 1000 руб
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Списываем деньги со счета A
Например переводим на счет B
Счет A
Баланс 1000 руб
- 100 руб
- 200 руб
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Сколько денег останется на балансе счета A?
Счет A
Баланс 1000 руб
- 100 руб
- 200 руб
————————
900 руб?
800 руб?
700 руб?
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Какой ответ правильный и почему?
700 руб
• И почему?
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Какой ответ правильный и почему?
700 руб
• И почему?
• Здравый смысл и арифметика
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Какой ответ правильный и почему?
700 руб
• И почему?
• Здравый смысл и арифметика
• Две операции списания не должны мешать друг другу
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Как этого добиться?
Очередность выполнения:
• -100 рублей потом -200
• Или наоборот
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Как этого добиться?
Очередность выполнения:
• -100 рублей потом -200
• Или наоборот
• Есть подозрение, что последовательно выполнять медленно и неэффективно
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Изолированность
Isolation
Действия выполняются независимо, одному действию неизвестно что
происходит внутри другого
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Какую еще проблему мы упустили?
Выполнение списания может внезапно прерваться
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Восстановимость
Recoverability
Если произошла ошибка
можем восстановить прежнее состояние данных
или
продолжить выполнение с того же места
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Атомарность
Atomicity
Изолированность + Восстановимость = Атомарность
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA ACID
• Atomicity
Consistency
Isolation
Durability
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA ACID
• • • Atomicity - восстановимость и изолированность
Consistency - те самые арифметические правила и здравый смысл
Isolation - независимость друг от друга
Durability - мы считаем диск надежным хранилищем
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Транзакция
Действие над данными,
обладающее свойствами ACID
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Транзакция
• • •• Переводит блок данных из одного консистентного состояния в другое
• Делает это атомарно
• Среди прочего, это означает что транзакции восстановимы и изолированны
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Как оно работает?
Например в PostgreSQL (ну почти)
Есть две проблемы чтобы заработало
• Конкурентный доступ к данным
• Внезапно все может упасть
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Как оно работает?
Например в PostgreSQL (ну почти)
Есть две проблемы чтобы заработало
• Конкурентный доступ к данным - для этого нужна сериализация
• Внезапно все может упасть - нужен какой-то умный алгоритм
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Сериализация
• На первый взгляд просто
• Уровень concurrency бывает очень высоким
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Сериализация
• На первый взгляд просто (например 2-3-10
транзакций вручную)
• Уровень concurrency бывает очень высоким
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Легко заметить
• Транзакции состоят из более мелких действий (списать со счета A, внести на
счет B и т.п.)
• Наверное среди этих элементарных действий проще найти не влияющие друг
на друга
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Легко заметить
• Транзакции состоят из более мелких действий (списать со счета A, внести на
счет B и т.п.)
• Наверное среди этих элементарных действий проще найти не влияющие друг
на друга - значит можно попробовать распараллелить
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Дано две транзакции
x и y
- ресурсы (блоки данных)
T1 T2
read(x) write(x)
write(y) write(y)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Дано две транзакции
x и y
- ресурсы (блоки данных)
T1 T2
read(x) write(x)
write(y) write(y)
История
r1(x)w2(y)w1(y)w2(y)
Семантика Эрбранта
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Конфликты
r1(x)
w1(x)
r1(x)
w1(x)
r2(x)
r2(x)
w2(x)
w2(x)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Конфликты
r1(x)
w1(x)
r1(x)
w1(x)
r2(x)
r2(x)
w2(x)
w2(x)
ОК, нет конфликта
Конфликт, порядок имеет значение
Конфликт, порядок имеет значение
Конфликт, порядок имеет значение
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Две истории для двух транзакций
T1 T2
r1(x) w2(x)
w1(y) w2(y)
r1(x) w2(x)w1(y) w2(y)
r1(x) w2(x)w1(y) w2(y)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Две истории для двух транзакций
T1 T2
r1(x) w2(x)
w1(y) w2(y)
r1(x) w2(x)w1(y) w2(y)
r1(x) w2(x)w1(y) w2(y)
Интуитивно понятно: стрелочки в одну сторону - хорошо
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Граф конфликтов
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Критерий сериализуемости
Граф конфликтов без циклов
⇔
история сериализуема
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Понятно как решать задачу, но
• Искать циклы в графе затруднительно
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Понятно как решать задачу, но
• Искать циклы в графе затруднительно
• Еще затруднительней - под OLTP нагрузкой
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Понятно как решать задачу, но
• Искать циклы в графе затруднительно
• Еще затруднительней - под OLTP нагрузкой
• Надо искать более хитрые подходы
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Понятно как решать задачу, но
• Искать циклы в графе затруднительно
• Еще затруднительней - под OLTP нагрузкой
• Надо искать более хитрые подходы Например блокировки
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Гранулярность блокировок
• Можно заблокировать все и сразу - перед началом любых действий
заблокировать все что нужно
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Гранулярность блокировок
• Можно заблокировать все и сразу - перед началом любых действий
заблокировать все что нужно
• Непонятно чем это лучше чем просто последовательное выполнение
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Гранулярность блокировок
• Можно заблокировать все и сразу - перед началом любых действий
заблокировать все что нужно
• Непонятно чем это лучше чем просто последовательное выполнение
• К этому в конце концов приходят различные NoSQL
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Гранулярность блокировок
• Можно заблокировать все и сразу - перед началом любых действий
заблокировать все что нужно
• Непонятно чем это лучше чем просто последовательное выполнение
• К этому в конце концов приходят различные NoSQL
• А ничем не лучше
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Two Phase Locking
2PL
• Блокировки берутся по мере необходимости
• Ни одна блокировка не снимается, покуда не взяты все необходимые
блокировки
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
2PL
Диаграмма
from: Weikum, Vossen
Transactional Information Systems:
Theory, Algorithms, and the Practice of
Concurrency Control and Recovery
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Что плохо в 2PL
• Дедлоки
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Что плохо в 2PL
• Дедлоки
• Медленно - никто не хочет ждать блокировки
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Что плохо в 2PL
• Дедлоки
• Медленно - никто не хочет ждать блокировки
• Зато обеспечена сериализация
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Что плохо в 2PL
• Дедлоки
• Медленно - никто не хочет ждать блокировки
• Зато обеспечена сериализация В любой нормальной базе 2PL основное
средство обеспечения сериализации
• ∗На самом деле бывают истории, которые 2PL разрулить не может в принципе
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
MVCC
MultiVersion Concurrency Control
• Интуитивно понятно - чтобы не ждать блокировку, берем предыдущую версию
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
MVCC
MultiVersion Concurrency Control
• Интуитивно понятно - чтобы не ждать блокировку, берем предыдущую версию
• PostgreSQL - версионник. MVCC это основа архитектуры
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA MVCC - теория
s = r1(x)w1(x)r2(x)w2(y)r1(y)w1(z)c1c2
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA MVCC - теория
s = r1(x)w1(x)r2(x)w2(y)r1(y)w1(z)c1c2
• Если предыдущая версия y не доступна первой транзакции на чтение,
историю сериализовать нельзя
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
MV2PL
Диаграмма
from: Weikum, Vossen
Transactional Information Systems:
Theory, Algorithms, and the Practice of
Concurrency Control and Recovery
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Лирическое отступление
• Tuple = Кортеж
• Page = Страница
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Лирическое отступление
• Tuple = Кортеж
• Page = Страница
• Страничная модель удобна для реализации транзакционных алгоритмов
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Лирическое отступление
• Tuple = Кортеж
• Page = Страница
• Страничная модель удобна для реализации транзакционных алгоритмов
• Безотносительно реляционной теории
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Как устроена страница в PostgreSQL
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA PostgreSQL MVCC
• UPDATE = INSERT + DELETE
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA PostgreSQL MVCC
• UPDATE = INSERT + DELETE
• DELETE убирает из области видимости
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA PostgreSQL MVCC
• UPDATE = INSERT + DELETE
• DELETE убирает из области видимости
• Убранное из области видимости рано или поздно подчищает vacuum
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Пример
tt=# INSERT into test(id) values(5);
INSERT 0 1
tt=# select *,xmin,xmax from test;
id | xmin | xmax
----+------+------
5 | 1266 | 0
(5 rows)
tt=# select txid_current();
txid_current
--------------
1267
(1 row)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Пример (продолжение)
tt=# begin;
BEGIN
tt=# UPDATE test set id=5 where id=4;
UPDATE 1
В другой сессии:
tt=# select *,xmin,xmax from test;
id | xmin | xmax
----+------+------
4 | 1264 | 1270
(3 rows)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Ссылки по теме
• Weikum, Vossen Transactional Information Systems: Theory, Algorithms, and the
Practice of Concurrency Control and Recovery
• http://momjian.us/main/writings/pgsql/mvcc.pdf - Примеры и специфика
PostgreSQL
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Следующая важная задача
Что делать,
если в момент операции списания мы упали
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Write Ahead Log
• Для чего писать лог?
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Write Ahead Log
• Для чего писать лог?
• Что именно писать в лог?
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Write Ahead Log
• Для чего писать лог?
• Что именно писать в лог?
• Что потом с этим делать?
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Для чего писать лог
• Если упадем, "грязные"страницы из памяти будут потеряны
• Дампить сразу на диск в датафайл может быть затруднительно
• Будем писать их в лог
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Что писать в лог
Например
• Type: UPDATE ID: 172 Undo: x ← xold Redo: x ← xnew
• Type: OUTCOME ID: 172 Status: COMMITED
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Для чего
Процедура восстановления
• Сканируем лог назад
• Ищем
• Winners: статус COMMITTED или ABORTED
• Loosers: все остальные
• Redo: COMMITTED winners
• Undo: loosers
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
PostgreSQL WAL
Особенности
• Redo
• Undo - версии прямо в датафайле
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA DBA intro
• Это была теория
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA DBA intro
• Это была теория
• Что об этом должен знать DBA?
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA DBA intro
• Это была теория
• Что об этом должен знать DBA?
• Да по-хорошему не только DBA
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Процессы
[pg@tr ~]$ ps ax | grep post
2199 ?? Ss 17:05.79 postgres: writer process (postgres)
2200 ?? Ss 6:29.36 postgres: wal writer process (postgres)
2201 ?? Ss 2:56.25 postgres: autovacuum launcher process (postgres)
2202 ?? Ss 12:49.19 postgres: stats collector process (postgres)
14046 ?? Ss 0:18.53 postgres: user mydb 127.0.0.1(48543) (postgres)
17252 ?? Is 0:11.93 postgres: user mydb 127.0.0.1(48800) (postgres)
26361 ?? Ss 0:01.20 postgres: user mydb 127.0.0.1(49512) (postgres)
1590 v0- S 17:47.29 /home/pg/pg_bin/bin/postgres -D /db/postgres/db01/data
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Структура файлов на диске
$PG_HOME/PG_VERSION
$PG_HOME/base
$PG_HOME/global
$PG_HOME/pg_clog
$PG_HOME/pg_hba.conf
$PG_HOME/pg_ident.conf
$PG_HOME/pg_multixact
$PG_HOME/pg_notify
$PG_HOME/pg_serial
$PG_HOME/pg_stat_tmp
$PG_HOME/pg_subtrans
$PG_HOME/pg_tblspc
$PG_HOME/pg_twophase
$PG_HOME/pg_xlog -> /db/postgres/db01/db_wal
$PG_HOME/postgresql.conf
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA OIDs
pg@pglect01:~> ls pg_lecture/base/
1 12489 12497 16385
tt=> SELECT datname,oid FROM pg_database WHERE datname=’postgres’;
datname | oid
----------+-------
postgres | 12497
(1 row)
tt=> SELECT datname,oid FROM pg_database WHERE datname=’tt’;
datname | oid
---------+-------
tt | 16385
(1 row)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA OIDs (продолжение)
pg@pglect01:~> ls pg_lecture/base/
1 12489 12497 16385
tt=> select relname,oid,relfilenode from pg_class where
relname=’test’;
relname | oid | relfilenode
---------+-------+-------------
test | 16388 | 16388
(1 row)
pg@pglect01:~> ls -l pg_lecture/base/16385/*
..................................................................
-rw------- 1 pg pg 8192 Apr 27 01:46 pg_lecture/base/16385/16386
-rw------- 1 pg pg 0 Apr 27 01:42 pg_lecture/base/16385/16388
-rw------- 1 pg pg 512 Apr 27 01:41 pg_lecture/base/16385/pg_filenode.map
-rw------- 1 pg pg 106804 Apr 27 01:41 pg_lecture/base/16385/pg_internal.init
-rw------- 1 pg pg 4 Apr 27 01:41 pg_lecture/base/16385/PG_VERSION
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Теперь посмотрим на память
(с помощью расширения pg_buffercache)
tt=# select reldatabase,relfilenode,relblocknumber,
isdirty,usagecount from pg_buffercache WHERE
relfilenode=16388;
reldatabase | relfilenode | relblocknumber | isdirty | usagecount
-------------+-------------+----------------+---------+------------
16385 | 16388 | 0 | t | 1
tt=# CHECKPOINT ;
CHECKPOINT
tt=# select reldatabase,relfilenode,relblocknumber,isdirty,usagecount from pg_buffercache
WHERE relfilenode=16388;
reldatabase | relfilenode | relblocknumber | isdirty | usagecount
-------------+-------------+----------------+---------+------------
16385 | 16388 | 0 | f | 1
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Память в СУБД обычно
• shared memory
• proc memory
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Память в PostgreSQL
postgres=# select name, setting, context from pg_settings where name ~ ’(shared_b|work_mem)’;
name | setting | context
----------------------+---------+------------
maintenance_work_mem | 16384 | user
shared_buffers | 16384 | postmaster
work_mem | 1024 | user
(3 rows)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Память в PostgreSQL
postgres=# select name, setting, context from pg_settings where name ~ ’(shared_b|work_mem)’;
name | setting | context
----------------------+---------+------------
maintenance_work_mem | 16384 | user
shared_buffers | 16384 | postmaster
work_mem | 1024 | user
(3 rows)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Выбираем сервер - 1
Память
• Много не бывает
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Выбираем сервер - 1
Память
• Много не бывает
• На самом деле зависит от дисков и размера базы
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Выбираем сервер - 0
Операционная система
• Все-таки linux
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Выбираем сервер - 0
Операционная система
• Все-таки linux
• И тем не менее linux
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Какие еще важные настройки есть в postgresql.conf
(о которых нельзя забывать)
• autovacuum
• WAL
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Autovacuum
• Одна из наихудших идей - отключить avtovacuum вообще
• "Коробочные"настройки недостаточно агрессивны
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Autovacuum - настройка
postgres=# select name, setting, context from pg_settings where category ~ ’Autovacuum’;
name | setting | context
-------------------------------------+-----------+------------
autovacuum | on | sighup
autovacuum_analyze_scale_factor | 0.1 | sighup
autovacuum_analyze_threshold | 50 | sighup
autovacuum_freeze_max_age | 200000000 | postmaster
autovacuum_max_workers | 3 | postmaster
autovacuum_multixact_freeze_max_age | 400000000 | postmaster
autovacuum_naptime | 60 | sighup
autovacuum_vacuum_cost_delay | 20 | sighup
autovacuum_vacuum_cost_limit | -1 | sighup
autovacuum_vacuum_scale_factor | 0.2 | sighup
autovacuum_vacuum_threshold | 50 | sighup
(11 rows)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA WAL
• Одна из наиболее распространенных проблем производительности
• Настройка тесно завязана на внутренности ОС
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA WAL - постановка проблемы
shared_buffers
кэш ОС
диски
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Оптимизация записи WAL
• wal_buffers (768kB → 16Mb)
• checkpoint_segments (3 - чекпойнт каждые 48Mb → 256 - 4Gb)
• checkpoint_timeout (что первое наступит)
• checkpoint_completion_target (для распределения чекпойнтов)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Оптимизация записи WAL - на что смотреть
postgres=# select pg_stat_reset_shared(’bgwriter’);
-[ RECORD 1 ]--------+-
pg_stat_reset_shared |
postgres=# select * from pg_stat_bgwriter ;
-[ RECORD 1 ]---------+------------------------------
checkpoints_timed | 0
checkpoints_req | 0
checkpoint_write_time | 0
checkpoint_sync_time | 0
buffers_checkpoint | 0
buffers_clean | 0
maxwritten_clean | 0
buffers_backend | 0
buffers_backend_fsync | 0
buffers_alloc | 0
stats_reset | 2014-03-15 00:08:54.931266-04
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Оптимизация записи WAL - на что смотреть 2
• Графики!
• %util лучше чем iops
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA %util
root@tr:~# iostat -d -x 1
Linux 3.2.0-4-amd64 (tr) 03/14/2014 _x86_64_ (1 CPU)
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.69 0.03 0.64 0.65 7.98 25.82 0.00 0.40 0.82 0.38 0.28 0.02
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Оптимизация записи WAL - "мелочи"
которые могут сильно осложнить жизнь
• ext4/xfs barrier
• checkpoint это важно - не загружайте диски попусту другими задачами
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Оптимизация записи WAL - дайте поработать bgwriter’у
postgres=# select name, setting, context, max_val, min_val from pg_settings where name ~ ’bgwr’;
name | setting | context | max_val | min_val
-------------------------+---------+---------+---------+---------
bgwriter_delay | 200 | sighup | 10000 | 10
bgwriter_lru_maxpages | 100 | sighup | 1000 | 0
bgwriter_lru_multiplier | 2 | sighup | 10 | 0
(3 rows)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA
Выбираем сервер - 2
Диски
• "Честный"RAID
• Если нужна производительность - BBU
• 2.5” SAS
• не все SSD одинаково полезны (intel dc 3700 vs desktop class)
• Дисковый массив хорошо, но нужно уметь настраивать
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Что делать, если плохие диски
• Покупать хорошие (я серьезно)
• synchronous_commit → off (но надо представлять себе риски)
• больше воркеров автовакуума
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Что нельзя делать, если плохие диски
postgres=# show commit_delay;
commit_delay
--------------
0
(1 row)
postgres=# show commit_siblings;
commit_siblings
-----------------
5
(1 row)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Резервное копирование
• Дамп != backup
• backup - некая специальная копия, с которой можно восстановиться на
момент последней удачно завершившейся перед аварией транзакции
• На практике дампы лучше все равно снимать (помимо backup’а)
• Единственный способ валидировать backup - восстановиться с него
• DBA может не знать SQL (это плохо, но что делать), знать backup/recovery -
обязан
• Конфиги! (лучше вообще в забэкапленом git’е)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Как работает backup
• SELECT pg_start_backup( label , true);
• rsync и магия
• SELECT pg_stop_backup();
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Как работает backup
• SELECT pg_start_backup( label , true);
• rsync и магия
• SELECT pg_stop_backup();
• Эффективно pg_basebackup делает то же самое
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Как работает recovery
• recovery.conf
• restore_command = ’cp /mnt/server/archivedir/%f %p’
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Как работает recovery
• recovery.conf
• restore_command = ’cp /mnt/server/archivedir/%f %p’
• магия!
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Репликация
• HotStandby и все остальное
• Насчет всего остального лучше 100500 раз подумать
• Репликация путем пересылки WAL есть суть постоянное восстановление из
backup’а на другом сервере
• Почему репликация это плохо
• Почему Master-Master/Active-Active это очень плохо
• Настройки
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Проблемы с master-master чаще связаны с неправильными ожидания
• Правильная постановка задачи
• Master-Master vs HotStandby для отказоустойчивости
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Настройки репликации
postgres=# select name, setting, context from pg_settings where category ~ ’Repl’;
name | setting | context
------------------------------+---------+------------
hot_standby | off | postmaster
hot_standby_feedback | off | sighup
max_standby_archive_delay | 30000 | sighup
max_standby_streaming_delay | 30000 | sighup
max_wal_senders | 0 | postmaster
synchronous_standby_names | | sighup
vacuum_defer_cleanup_age | 0 | sighup
wal_keep_segments | 0 | sighup
wal_receiver_status_interval | 10 | sighup
wal_receiver_timeout | 60000 | sighup
wal_sender_timeout | 60000 | sighup
(11 rows)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Troubleshooting PostgreSQL
• Что вообще сейчас происходит?
• В порядке-ли базовые настройки
• Стейтменты
• Раскопки лога
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Как использовать explain
pg@pglect01:~/dellstore2-normal-1.0> psql dellstore2 -c ’explain (analyze on, buffers on) select count(*) from customers’
QUERY PLAN
-------------------------------------------------------------------------------------------------------------------
Aggregate (cost=738.00..738.01 rows=1 width=0) (actual time=8.357..8.357 rows=1 loops=1)
Buffers: shared hit=488
-> Seq Scan on customers (cost=0.00..688.00 rows=20000 width=0) (actual time=0.026..5.728 rows=20000 loops=1)
Buffers: shared hit=488
Total runtime: 8.607 ms
(5 rows)
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA "Этот запрос не будет работать быстро никогда"
• count(*)
• join на 300 таблиц
• Запрос возвращает клиенту 1 000 000 000 строк
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA Несколько слов о connection pool
• pgbouncer
• pgpoolII
• разное
PGDAY’14
RUSSIA
PGDAY’14
RUSSIA pgbouncer
• nginx-style
• три режима пула - transaction, statement, session
• must have

More Related Content

What's hot

Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Ontico
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
Ontico
 
Ruz Rt Rootconf 2009 04
Ruz Rt Rootconf 2009 04Ruz Rt Rootconf 2009 04
Ruz Rt Rootconf 2009 04Liudmila Li
 
Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)
Ontico
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
IT-Portfolio
 
Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)
Nikolay Sivko
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Ontico
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
Nikolay Sivko
 
Мониторинг качества работы вашего проекта
Мониторинг качества работы вашего проектаМониторинг качества работы вашего проекта
Мониторинг качества работы вашего проекта
Nikolay Sivko
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
Alex Chistyakov
 
Js in ui_automation
Js in ui_automationJs in ui_automation
Js in ui_automation
aliaksei_boole
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ontico
 
To be reactive...RxJava
To be reactive...RxJavaTo be reactive...RxJava
To be reactive...RxJava
Maxim Gorelikov
 
Ryazan
RyazanRyazan
My talk on PgDay Russia 2014
My talk on PgDay Russia 2014My talk on PgDay Russia 2014
My talk on PgDay Russia 2014
Alex Chistyakov
 
Хорошо поддерживаемое приложение
Хорошо поддерживаемое приложениеХорошо поддерживаемое приложение
Хорошо поддерживаемое приложение
Nikolay Sivko
 
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
Ontico
 
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Ontico
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
Daniel Podolsky
 
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Ontico
 

What's hot (20)

Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
Миф об очень сложном Highload / Александр Горный (Mail.Ru Group)
 
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
NodeJS в HighLoad проекте / Акрицкий Владимир (iAge Engineering)
 
Ruz Rt Rootconf 2009 04
Ruz Rt Rootconf 2009 04Ruz Rt Rootconf 2009 04
Ruz Rt Rootconf 2009 04
 
Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)Всему своё время / Роман Ивлиев (Банки.ру)
Всему своё время / Роман Ивлиев (Банки.ру)
 
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
20 апреля, DEV {highload}, "Демоны в большом проекте – проблемы и их решения ...
 
Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)Monitoring-driven эксплуатация (rootconf2015)
Monitoring-driven эксплуатация (rootconf2015)
 
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
Приключения проекта от компьютера разработчика до серьезных нагрузок / Андрей...
 
Мастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатацииМастер-класс про организацию службы эксплуатации
Мастер-класс про организацию службы эксплуатации
 
Мониторинг качества работы вашего проекта
Мониторинг качества работы вашего проектаМониторинг качества работы вашего проекта
Мониторинг качества работы вашего проекта
 
My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016My talk on HBase ops engineering at TBD Jun 2016
My talk on HBase ops engineering at TBD Jun 2016
 
Js in ui_automation
Js in ui_automationJs in ui_automation
Js in ui_automation
 
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
Ошибки проектирования высоконагруженных проектов / Максим Ехлаков (OneTwoRent)
 
To be reactive...RxJava
To be reactive...RxJavaTo be reactive...RxJava
To be reactive...RxJava
 
Ryazan
RyazanRyazan
Ryazan
 
My talk on PgDay Russia 2014
My talk on PgDay Russia 2014My talk on PgDay Russia 2014
My talk on PgDay Russia 2014
 
Хорошо поддерживаемое приложение
Хорошо поддерживаемое приложениеХорошо поддерживаемое приложение
Хорошо поддерживаемое приложение
 
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
ChatOps на практике. Организация работы команды сопровождения / Евгений Потап...
 
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
Хайлоад и безопасность в мире DevOps: совместимы ли? / Юрий Колесов (security...
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
 
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
Как поддерживать и развивать пачку "похожих" проектов. Кластер или конгломера...
 

Viewers also liked

Некоторые улучшения производительности: Huge Pages – Илья Космодемьянский
Некоторые улучшения производительности: Huge Pages – Илья КосмодемьянскийНекоторые улучшения производительности: Huge Pages – Илья Космодемьянский
Некоторые улучшения производительности: Huge Pages – Илья Космодемьянский
Yandex
 
Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»
Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»
Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»
Mail.ru Group
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
pgdayrussia
 
Илья Космодемьянский, PostgreSQL-Consulting.com
Илья Космодемьянский, PostgreSQL-Consulting.comИлья Космодемьянский, PostgreSQL-Consulting.com
Илья Космодемьянский, PostgreSQL-Consulting.com
Ontico
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Mail.ru Group
 
Масштабирование баз данных
Масштабирование баз данныхМасштабирование баз данных
Масштабирование баз данных
SQALab
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Ontico
 
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Ontico
 
Потоковая репликация PostgreSQL
Потоковая репликация PostgreSQLПотоковая репликация PostgreSQL
Потоковая репликация PostgreSQL
DevOWL Meetup
 
My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQL
Alex Chistyakov
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахPostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
Alexey Vasiliev
 
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Ontico
 
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
Ontico
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
Ontico
 
To skoda
To skodaTo skoda
To skoda
langdon1984
 
Supersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data Analytics
Supersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data AnalyticsSupersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data Analytics
Supersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data Analytics
mason_s
 

Viewers also liked (16)

Некоторые улучшения производительности: Huge Pages – Илья Космодемьянский
Некоторые улучшения производительности: Huge Pages – Илья КосмодемьянскийНекоторые улучшения производительности: Huge Pages – Илья Космодемьянский
Некоторые улучшения производительности: Huge Pages – Илья Космодемьянский
 
Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»
Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»
Илья Космодемьянский, PostgreSQL-Consulting.com. «Pragma autonomous transaction»
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 1...
 
Илья Космодемьянский, PostgreSQL-Consulting.com
Илья Космодемьянский, PostgreSQL-Consulting.comИлья Космодемьянский, PostgreSQL-Consulting.com
Илья Космодемьянский, PostgreSQL-Consulting.com
 
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
Дмитрий Кремер, МИА «Россия сегодня» (РИА Новости). «Построение новостного we...
 
Масштабирование баз данных
Масштабирование баз данныхМасштабирование баз данных
Масштабирование баз данных
 
Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)Что такое Postgresql (Максим Богук)
Что такое Postgresql (Максим Богук)
 
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
 
Потоковая репликация PostgreSQL
Потоковая репликация PostgreSQLПотоковая репликация PostgreSQL
Потоковая репликация PostgreSQL
 
My talk on administering PostgreSQL
My talk on administering PostgreSQLMy talk on administering PostgreSQL
My talk on administering PostgreSQL
 
PostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектахPostgreSQL в высоконагруженных проектах
PostgreSQL в высоконагруженных проектах
 
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
Сага о кластере. Все что вы хотели знать про горизонтальное масштабирование в...
 
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
NoSQL - неспроста ли это ЖЖЖ / Даниил Подольский (inCaller.org)
 
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
10 способов достижения HighLoad'а и BigData на ровном месте / Илья Космодемья...
 
To skoda
To skodaTo skoda
To skoda
 
Supersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data Analytics
Supersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data AnalyticsSupersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data Analytics
Supersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data Analytics
 

Similar to PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Космодемьянский

Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Ontico
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
Alex Chistyakov
 
Optimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseOptimization of a big PostgreSQL database
Optimization of a big PostgreSQL database
Alex Chistyakov
 
OpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraOpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second Era
Sveta Smirnova
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Ontico
 
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Yandex
 
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Mad Devs
 
My talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPConMy talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPCon
Alex Chistyakov
 
Moscow DevOps meetup 18.05.13
Moscow DevOps meetup 18.05.13Moscow DevOps meetup 18.05.13
Moscow DevOps meetup 18.05.13Alex Chistyakov
 
Процесс разработки дата-сервисов или CRISP курильщика
Процесс разработки дата-сервисов или CRISP курильщикаПроцесс разработки дата-сервисов или CRISP курильщика
Процесс разработки дата-сервисов или CRISP курильщика
Дмитрий Колодезев
 
SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013
Alex Chistyakov
 
ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущего
Alex Chistyakov
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Ontico
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrusAlex Chistyakov
 
Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.
Pavel Veinik
 
Orm на no sql через jpa. Павел Вейник
Orm на no sql через jpa. Павел ВейникOrm на no sql через jpa. Павел Вейник
Orm на no sql через jpa. Павел Вейник
Alina Dolgikh
 
Highload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPIHighload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPI
Leonid Yuriev
 
DevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компанииDevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компании
Alexey Vakhov
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
Nikolay Samokhvalov
 
История небольшого успеха с PostgreSQL – Владимир Бородин
История небольшого успеха с PostgreSQL – Владимир БородинИстория небольшого успеха с PostgreSQL – Владимир Бородин
История небольшого успеха с PostgreSQL – Владимир Бородин
Yandex
 

Similar to PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Космодемьянский (20)

Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
Как устроена MySQL-репликация, Андрей Аксенов (Sphinx)
 
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
"Мы два месяца долбались, а потом построили индекс" (c) Аксенов
 
Optimization of a big PostgreSQL database
Optimization of a big PostgreSQL databaseOptimization of a big PostgreSQL database
Optimization of a big PostgreSQL database
 
OpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second EraOpenSource SQL Databases Enter Millions Queries per Second Era
OpenSource SQL Databases Enter Millions Queries per Second Era
 
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
 
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"Сергей Чистович "Подходы к кешированию на UGC-сервисе"
Сергей Чистович "Подходы к кешированию на UGC-сервисе"
 
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
Приключения проекта от компьютера разработчика до серьезных нагрузок/ The pro...
 
My talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPConMy talk on Hadoop stack operations engineering at OSPCon
My talk on Hadoop stack operations engineering at OSPCon
 
Moscow DevOps meetup 18.05.13
Moscow DevOps meetup 18.05.13Moscow DevOps meetup 18.05.13
Moscow DevOps meetup 18.05.13
 
Процесс разработки дата-сервисов или CRISP курильщика
Процесс разработки дата-сервисов или CRISP курильщикаПроцесс разработки дата-сервисов или CRISP курильщика
Процесс разработки дата-сервисов или CRISP курильщика
 
SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013SaltStack vs Chef, HappyDev 2013
SaltStack vs Chef, HappyDev 2013
 
ZFS - файловая система будущего
ZFS - файловая система будущегоZFS - файловая система будущего
ZFS - файловая система будущего
 
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
Асинхронная репликация без цензуры, Олег Царёв (Mail.ru Group)
 
Daemons In Web on #devrus
Daemons In Web on #devrusDaemons In Web on #devrus
Daemons In Web on #devrus
 
Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.Человеческий фактор в разработке, или ORM на noSql через JPA.
Человеческий фактор в разработке, или ORM на noSql через JPA.
 
Orm на no sql через jpa. Павел Вейник
Orm на no sql через jpa. Павел ВейникOrm на no sql через jpa. Павел Вейник
Orm на no sql через jpa. Павел Вейник
 
Highload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPIHighload++2013: TopGun - архитектура терабитной платформы DPI
Highload++2013: TopGun - архитектура терабитной платформы DPI
 
DevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компанииDevOps или искусство выживания в растущей компании
DevOps или искусство выживания в растущей компании
 
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
2014.09.24 история небольшого успеха с PostgreSQL (Yandex)
 
История небольшого успеха с PostgreSQL – Владимир Бородин
История небольшого успеха с PostgreSQL – Владимир БородинИстория небольшого успеха с PostgreSQL – Владимир Бородин
История небольшого успеха с PostgreSQL – Владимир Бородин
 

More from pgdayrussia

PG Day'14 Russia, Secure PostgreSQL Deployment, Magnus Hagander
PG Day'14 Russia, Secure PostgreSQL Deployment, Magnus HaganderPG Day'14 Russia, Secure PostgreSQL Deployment, Magnus Hagander
PG Day'14 Russia, Secure PostgreSQL Deployment, Magnus Hagander
pgdayrussia
 
PG Day'14 Russia, Работа со слабо-структурированными данными в PostgreSQL, Ол...
PG Day'14 Russia, Работа со слабо-структурированными данными в PostgreSQL, Ол...PG Day'14 Russia, Работа со слабо-структурированными данными в PostgreSQL, Ол...
PG Day'14 Russia, Работа со слабо-структурированными данными в PostgreSQL, Ол...
pgdayrussia
 
PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль
PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав КовальPG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль
PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль
pgdayrussia
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
pgdayrussia
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
pgdayrussia
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...
pgdayrussia
 
PG Day'14 Russia, PostgreSQL System Architecture, Heikki Linnakangas
PG Day'14 Russia, PostgreSQL System Architecture, Heikki LinnakangasPG Day'14 Russia, PostgreSQL System Architecture, Heikki Linnakangas
PG Day'14 Russia, PostgreSQL System Architecture, Heikki Linnakangas
pgdayrussia
 
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротков
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр КоротковPG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротков
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротков
pgdayrussia
 
PG Day'14 Russia, GIN — Stronger than ever in 9.4 and further, Александр Коро...
PG Day'14 Russia, GIN — Stronger than ever in 9.4 and further, Александр Коро...PG Day'14 Russia, GIN — Stronger than ever in 9.4 and further, Александр Коро...
PG Day'14 Russia, GIN — Stronger than ever in 9.4 and further, Александр Коро...
pgdayrussia
 
PG Day'14 Russia, Нетрадиционный PostgreSQL: хранение бинарных данных в БД, А...
PG Day'14 Russia, Нетрадиционный PostgreSQL: хранение бинарных данных в БД, А...PG Day'14 Russia, Нетрадиционный PostgreSQL: хранение бинарных данных в БД, А...
PG Day'14 Russia, Нетрадиционный PostgreSQL: хранение бинарных данных в БД, А...
pgdayrussia
 
PG Day'14 Russia, Модуль anyarray, Федор Сигаев
PG Day'14 Russia, Модуль anyarray, Федор СигаевPG Day'14 Russia, Модуль anyarray, Федор Сигаев
PG Day'14 Russia, Модуль anyarray, Федор Сигаев
pgdayrussia
 

More from pgdayrussia (11)

PG Day'14 Russia, Secure PostgreSQL Deployment, Magnus Hagander
PG Day'14 Russia, Secure PostgreSQL Deployment, Magnus HaganderPG Day'14 Russia, Secure PostgreSQL Deployment, Magnus Hagander
PG Day'14 Russia, Secure PostgreSQL Deployment, Magnus Hagander
 
PG Day'14 Russia, Работа со слабо-структурированными данными в PostgreSQL, Ол...
PG Day'14 Russia, Работа со слабо-структурированными данными в PostgreSQL, Ол...PG Day'14 Russia, Работа со слабо-структурированными данными в PostgreSQL, Ол...
PG Day'14 Russia, Работа со слабо-структурированными данными в PostgreSQL, Ол...
 
PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль
PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав КовальPG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль
PG Day'14 Russia, Социальная сеть, которая просто работает, Владислав Коваль
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 3...
 
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...
PG Day'14 Russia, PostgreSQL как платформа для разработки приложений, часть 2...
 
PG Day'14 Russia, PostgreSQL System Architecture, Heikki Linnakangas
PG Day'14 Russia, PostgreSQL System Architecture, Heikki LinnakangasPG Day'14 Russia, PostgreSQL System Architecture, Heikki Linnakangas
PG Day'14 Russia, PostgreSQL System Architecture, Heikki Linnakangas
 
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротков
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр КоротковPG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротков
PG Day'14 Russia, Индексный поиск по регулярным выражениям, Александр Коротков
 
PG Day'14 Russia, GIN — Stronger than ever in 9.4 and further, Александр Коро...
PG Day'14 Russia, GIN — Stronger than ever in 9.4 and further, Александр Коро...PG Day'14 Russia, GIN — Stronger than ever in 9.4 and further, Александр Коро...
PG Day'14 Russia, GIN — Stronger than ever in 9.4 and further, Александр Коро...
 
PG Day'14 Russia, Нетрадиционный PostgreSQL: хранение бинарных данных в БД, А...
PG Day'14 Russia, Нетрадиционный PostgreSQL: хранение бинарных данных в БД, А...PG Day'14 Russia, Нетрадиционный PostgreSQL: хранение бинарных данных в БД, А...
PG Day'14 Russia, Нетрадиционный PostgreSQL: хранение бинарных данных в БД, А...
 
PG Day'14 Russia, Модуль anyarray, Федор Сигаев
PG Day'14 Russia, Модуль anyarray, Федор СигаевPG Day'14 Russia, Модуль anyarray, Федор Сигаев
PG Day'14 Russia, Модуль anyarray, Федор Сигаев
 

PG Day'14 Russia, PostgreSQL: архитектура, настройка и оптимизация, Илья Космодемьянский