Что нового и полезного в PostgreSQL 9.5 / Илья...

19
Что нового и полезного в PostgreSQL 9.5 Highload 2015 Илья Космодемьянский [email protected]

Transcript of Что нового и полезного в PostgreSQL 9.5 / Илья...

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

Что нового и полезного в PostgreSQL 9.5Highload 2015

Илья Космодемьянский[email protected]

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

Outline

• Как устроены новые релизы PostgreSQL

I Когда нам обновляться?I Когда фичей X можно будет пользоваться?

• Очень важные новинки версии 9.5• Хорошие и полезные улучшения• Задел на будущее• Бонусы

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

Outline

• Как устроены новые релизы PostgreSQLI Когда нам обновляться?I Когда фичей X можно будет пользоваться?

• Очень важные новинки версии 9.5• Хорошие и полезные улучшения• Задел на будущее• Бонусы

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

Outline

• Как устроены новые релизы PostgreSQLI Когда нам обновляться?I Когда фичей X можно будет пользоваться?

• Очень важные новинки версии 9.5• Хорошие и полезные улучшения• Задел на будущее• Бонусы

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

Как устроены релизы в PostgreSQL

• http://www.postgresql.org/support/versioning/• Релизы это 9.2.*, 9.3.*, 9.4.*, 9.5.*• Их стараются выпускать раз в год• Минорные релизы выпускают чаще, по мере накопленияполезных исправлений в мажорные релизы

• Жизненный цикл релиза – 5 лет, после этого сообщество”снимает релиз с поддержки” – в него больше не вносятсяисправления

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

Как устроены релизы в PostgreSQL

• http://www.postgresql.org/support/versioning/• Релизы это 9.2.*, 9.3.*, 9.4.*, 9.5.*• Их стараются выпускать раз в год• Минорные релизы выпускают чаще, по мере накопленияполезных исправлений в мажорные релизы

• Жизненный цикл релиза – 5 лет, после этого сообщество”снимает релиз с поддержки” – в него больше не вносятсяисправления

• Держать в production снятые с поддержки релизы –смелость, граничащая с безрассудством

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

Версия 9.5

• 10 июня 2014 - branch 9.4• Июнь 2014 - Первый Commit Fest для релиза 9.5 (CF1)• Август 2014 - CF2• Октябрь 2014 - CF3• Декабрь 2014 - CF4• Февраль 2015 - CF5• Август 2015 - Alpha2• Октябрь 2015 - Beta1

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

Версия 9.5

• > 2000 файлов измененено• > 200 000 строк кода добавлено...• ...и примерно столько же удалено• Имеют-ли смысл эти цифры? Имеют, если сравнивать спредыдущим релизом

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

Наиболее обсуждаемые фичи PostgreSQL 9.5

• Row level security (RLS)• SELECT ... FOR UPDATE SKIP LOCKED• Upsert: INSERT ... ON CONFLICT

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

Row level security

tt=# ALTER TABLE departments ENABLE ROW LEVEL SECURITY;ALTER TABLEpostgres=# create policy kgb on departments for all to publicUSING (owner = CURRENT_USER) ;CREATE POLICYtt=# select * from departments;id | name | chief | owner

----+-----------------+--------------+---------1 | первый | майор Пронин | mpronin3 | Духовного роста | Иван Иванов | ivanov2 | АХЧ | Вася Пупкен | pupken

(3 rows)tt=# \c - ivanovYou are now connected to database "postgres" as user "ivanov".postgres=> select * from departments;id | name | chief | owner

----+-----------------+-------------+--------3 | Духовного роста | Иван Иванов | ivanov

(1 row)

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

SELECT ... FOR UPDATE SKIP LOCKED

tt=# SELECT * FROM test FOR UPDATE NOWAIT;ERROR: could not obtain lock on row in relation "test"

tt=# SELECT * FROM test FOR UPDATE SKIP LOCKED;id | name---+--------1 | test

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

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

Upsert problem: INSERT ... ON CONFLICT

postgres=> insert into tt(name) values (’bar’);INSERT 0 1postgres=> select * from tt;id | name

----+------1 | foo2 | bar

(2 rows)

postgres=> insert into tt(id, name) values (2,’buzz’);ERROR: duplicate key value violates unique constraint "tt_pk"DETAIL: Key (id)=(2) already exists.

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

Upsert: INSERT ... ON CONFLICT

postgres=> insert into tt(id, name) values (2,’buzz’)on conflict do nothing;INSERT 0 0postgres=> insert into tt(id, name) values (2,’buzz’)on conflict(id) do update set name=excluded.name || ’ edited’;INSERT 0 1postgres=> select * from tt;id | name

----+-------------1 | foo2 | buzz edited

(2 rows)

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

Чуть менее маркетинговые, но очень важные фичи

• Новые настройки WAL• recovery_target_action• BRIN индексы• Улучшения производительности• Расширены OLAP-возможности

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

Новые настройки WAL

• БылоI checkpoint_segments

• СталоI min_wal_size и max_wal_sizeI Логичней и экономит место

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

recovery_target_action

• pause• promote• shutdown

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

BRIN индексы

• min/max• Сильно меньше B-tree• Предназначены для больших таблиц• Медленней читать чем B-tree

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

Когда обновляться?

• Ждем релиза в декабре• В марте-апреле оцениваем количество и критичность багов• Летом обновляемся• (Это не руководство к действию!)

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

Questions?

[email protected] will be available on

http://blog.postgresql-consulting.com