SlideShare a Scribd company logo
Что нового и полезного в PostgreSQL 9.5
Highload 2015
Илья Космодемьянский
ik@postgresql-consulting.com
Outline
• Как устроены новые релизы PostgreSQL
Outline
• Как устроены новые релизы PostgreSQL
Когда нам обновляться?
Когда фичей X можно будет пользоваться?
Outline
• Как устроены новые релизы PostgreSQL
Когда нам обновляться?
Когда фичей X можно будет пользоваться?
• Очень важные новинки версии 9.5
• Хорошие и полезные улучшения
• Задел на будущее
• Бонусы
Как устроены релизы в PostgreSQL
• http://www.postgresql.org/support/versioning/
• Релизы это 9.2.*, 9.3.*, 9.4.*, 9.5.*
• Их стараются выпускать раз в год
• Минорные релизы выпускают чаще, по мере накопления
полезных исправлений в мажорные релизы
• Жизненный цикл релиза – 5 лет, после этого сообщество
”снимает релиз с поддержки” – в него больше не вносятся
исправления
Как устроены релизы в PostgreSQL
• http://www.postgresql.org/support/versioning/
• Релизы это 9.2.*, 9.3.*, 9.4.*, 9.5.*
• Их стараются выпускать раз в год
• Минорные релизы выпускают чаще, по мере накопления
полезных исправлений в мажорные релизы
• Жизненный цикл релиза – 5 лет, после этого сообщество
”снимает релиз с поддержки” – в него больше не вносятся
исправления
• Держать в production снятые с поддержки релизы –
смелость, граничащая с безрассудством
Версия 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
Версия 9.5
• > 2000 файлов измененено
• > 200 000 строк кода добавлено...
• ...и примерно столько же удалено
• Имеют-ли смысл эти цифры? Имеют, если сравнивать с
предыдущим релизом
Наиболее обсуждаемые фичи PostgreSQL 9.5
• Row level security (RLS)
• SELECT ... FOR UPDATE SKIP LOCKED
• Upsert: INSERT ... ON CONFLICT
Row level security
tt=# ALTER TABLE departments ENABLE ROW LEVEL SECURITY;
ALTER TABLE
postgres=# create policy kgb on departments for all to public
USING (owner = CURRENT_USER) ;
CREATE POLICY
tt=# select * from departments;
id | name | chief | owner
----+-----------------+--------------+---------
1 | первый | майор Пронин | mpronin
3 | Духовного роста | Иван Иванов | ivanov
2 | АХЧ | Вася Пупкен | pupken
(3 rows)
tt=# c - ivanov
You are now connected to database "postgres" as user "ivanov".
postgres=> select * from departments;
id | name | chief | owner
----+-----------------+-------------+--------
3 | Духовного роста | Иван Иванов | ivanov
(1 row)
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
-- Просто пропускаем те строки, на которые не можем взять блокировку.
-- Очень полезно для всяких простых очередей
Upsert problem: INSERT ... ON CONFLICT
postgres=> insert into tt(name) values (’bar’);
INSERT 0 1
postgres=> select * from tt;
id | name
----+------
1 | foo
2 | 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.
Upsert: INSERT ... ON CONFLICT
postgres=> insert into tt(id, name) values (2,’buzz’)
on conflict do nothing;
INSERT 0 0
postgres=> insert into tt(id, name) values (2,’buzz’)
on conflict(id) do update set name=excluded.name || ’ edited’;
INSERT 0 1
postgres=> select * from tt;
id | name
----+-------------
1 | foo
2 | buzz edited
(2 rows)
Чуть менее маркетинговые, но очень важные фичи
• Новые настройки WAL
• recovery_target_action
• BRIN индексы
• Улучшения производительности
• Расширены OLAP-возможности
Новые настройки WAL
• Было
checkpoint_segments
• Стало
min_wal_size и max_wal_size
Логичней и экономит место
recovery_target_action
• pause
• promote
• shutdown
BRIN индексы
• min/max
• Сильно меньше B-tree
• Предназначены для больших таблиц
• Медленней читать чем B-tree
Когда обновляться?
• Ждем релиза в декабре
• В марте-апреле оцениваем количество и критичность багов
• Летом обновляемся
• (Это не руководство к действию!)
Questions?
ik@postgresql-consulting.com
slides will be available on
http://blog.postgresql-consulting.com

More Related Content

PDF
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
PDF
RootConf 2015
PPTX
обзор архитектуры и подсистем деплоя и мониторинга
PDF
Облако в Badoo год спустя
PDF
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
PDF
Вячеслав Бахмутов
PDF
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
PDF
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)
Мониторинг ожиданий в PostgreSQL / Курбангалиев Ильдус (Postgres Professional)
RootConf 2015
обзор архитектуры и подсистем деплоя и мониторинга
Облако в Badoo год спустя
Кластеры баз данных делаем сложные вещи просто / Андрей Тихонов (Avito)
Вячеслав Бахмутов
Внутреннее устройство PostgreSQL: временные таблицы и фрагментация памяти / Г...
libfpta — обгоняя SQLite и Tarantool / Леонид Юрьев (Positive Technologies)

What's hot (20)

PPTX
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
PDF
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
PDF
Юрий Насретдинов, Badoo
PPTX
В ногу со временем, или как делать upgrade PostgreSQL / Андрей Сальников (Dat...
PPTX
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
PPTX
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
PDF
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
PPTX
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
PDF
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
PDF
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
PPTX
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
PPTX
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
PDF
Константин Осипов
PDF
My talk on monitoring systems at RootConf 2016
PDF
Docker & Puppet: как их скрестить и надо ли вам это?
PDF
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
PDF
Современная операционная система: что надо знать разработчику / Александр Кри...
PDF
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
PDF
My talk at Highload++ 2015
PPTX
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Новые технологии репликации данных в PostgreSQL / Александр Алексеев (Postgre...
Юрий Насретдинов, Badoo
В ногу со временем, или как делать upgrade PostgreSQL / Андрей Сальников (Dat...
Как ускорить MySQL Handler Socket в 9 раз / Александр Яковлев (Мамба)
Жизнь проекта на production советы по эксплуатации / Николай Сивко (okmeter.io)
PostgreSQL - Ups, DevOps..., Алексей Лесовский (PostgreSQL-Consulting)
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
nginx.CHANGES.2015 / Игорь Сысоев, Валентин Бартенев (Nginx)
Релиз инжиниринг Mail.ru, взгляд изнутри / Максим Глеков (Mail.Ru Group)
MyRocks Табличный Движок для MySQL / Алексей Майков (Facebook) / Сергей Петру...
За счет чего Tarantool такой оптимальный / Денис Аникин (Mail.Ru)
Константин Осипов
My talk on monitoring systems at RootConf 2016
Docker & Puppet: как их скрестить и надо ли вам это?
Девять кругов ада или PostgreSQL Vacuum / Алексей Лесовский (PostgreSQL-Consu...
Современная операционная система: что надо знать разработчику / Александр Кри...
noBackend, или Как выжить в эпоху толстеющих клиентов / Самохвалов Николай
My talk at Highload++ 2015
Автоматизация тестирования клиентской производительности / Николай Лавлинский...
Ad

Viewers also liked (20)

PDF
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
PPTX
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
PPTX
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
PDF
Где живут Ваши объявления / Тюрин Михаил (Avito)
PDF
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
PDF
Как понять, что происходит на сервере? / Александр Крижановский (NatSys Lab.,...
PDF
Использование Tarantool в качестве платформы виртуализации данных / Константи...
PDF
The Future of Postgres Sharding / Bruce Momjian (PostgreSQL)
PDF
Deep dive into PostgreSQL internal statistics / Алексей Лесовский (PostgreSQL...
PDF
100 лучших способов получения клиентов из интернета
PPT
Аудитория интернета в России: еще один год. Взгляд со стороны
PPT
Зачем использовать наружную рекламу
PDF
Рынок мониторинга социальных медиа в странах СНГ (Q3 2011), отраслевой профиль
PPTX
MarketingPeople - proposal to investors
PDF
Анализ рекламных кампаний в интернете. Что и как нужно измерять
PDF
Причины совершения покупок и причины отказа от них, среди покупателей в интер...
PPTX
Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)
PDF
Социальные сети для журналиста
PPTX
Роль социальных медиа в выводе нового бренда на рынок (на примере Tele2 в Каз...
PDF
Как попасть под фильтры поисковых систем.
Spilo, отказоустойчивый PostgreSQL кластер / Oleksii Kliukin (Zalando SE)
Поддержка высоконагруженного проекта: мониторинг, резервирование, обслуживани...
Monitoring driven эксплуатация / Николай Сивко (HeadHunter)
Где живут Ваши объявления / Тюрин Михаил (Avito)
Танцующий кластер. Практическое руководство дрессировщика PostgreSQL / Алексе...
Как понять, что происходит на сервере? / Александр Крижановский (NatSys Lab.,...
Использование Tarantool в качестве платформы виртуализации данных / Константи...
The Future of Postgres Sharding / Bruce Momjian (PostgreSQL)
Deep dive into PostgreSQL internal statistics / Алексей Лесовский (PostgreSQL...
100 лучших способов получения клиентов из интернета
Аудитория интернета в России: еще один год. Взгляд со стороны
Зачем использовать наружную рекламу
Рынок мониторинга социальных медиа в странах СНГ (Q3 2011), отраслевой профиль
MarketingPeople - proposal to investors
Анализ рекламных кампаний в интернете. Что и как нужно измерять
Причины совершения покупок и причины отказа от них, среди покупателей в интер...
Мониторинг всех слоев web проекта / Сивко Николай (hh.ru)
Социальные сети для журналиста
Роль социальных медиа в выводе нового бренда на рынок (на примере Tele2 в Каз...
Как попасть под фильтры поисковых систем.
Ad

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

PDF
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
PDF
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
PDF
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
PDF
Расширения для PostgreSQL
PDF
Советы для начинающих разработчиков PostgreSQL
PPT
SAMag2007 Conference: PostgreSQL 8.3 presentation
PDF
"Новые возможности MySQL 5.7"
PDF
Олег Бартунов и Иван Панченко
PPTX
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
PDF
MySQL Test Framework для поддержки клиентов и верификации багов
PDF
"Деплой кода процедур" Мурат Кабилов (Avito)
PDF
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
PPTX
django-and-postgresql
PDF
PostgreSQL performance recipes
PDF
MariaDB 10.1 - что нового.
PDF
Devconf2010 mariadb-extra-features
PDF
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
PPTX
User Defined Materials in LS-DYNA
PDF
MySQL: Есть ли жизнь после 1 млрд. записей.
PDF
Поговорим о микрооптимизациях .NET-приложений
Эксперименты с Postgres в Docker и облаках — оптимизация настроек и схемы ва...
Промышленный подход к тюнингу PostgreSQL: эксперименты над базами данных
20160303 Hacking PostgreSQL Тема 02 Сообщество PostgreSQL и инструменты разра...
Расширения для PostgreSQL
Советы для начинающих разработчиков PostgreSQL
SAMag2007 Conference: PostgreSQL 8.3 presentation
"Новые возможности MySQL 5.7"
Олег Бартунов и Иван Панченко
что пришлось тестировать и о чем узнать при подготовке Linux версии pvs-studio
MySQL Test Framework для поддержки клиентов и верификации багов
"Деплой кода процедур" Мурат Кабилов (Avito)
Алексей Куканов — Параллелизм в C++: управляйте приложением, а не потоками!
django-and-postgresql
PostgreSQL performance recipes
MariaDB 10.1 - что нового.
Devconf2010 mariadb-extra-features
Современному хайлоду - современные решения: MySQL 8.0 и улучшения Percona
User Defined Materials in LS-DYNA
MySQL: Есть ли жизнь после 1 млрд. записей.
Поговорим о микрооптимизациях .NET-приложений

More from Ontico (20)

PDF
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
PDF
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
PPTX
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PDF
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
PDF
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
PDF
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
PPTX
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
PPTX
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
PDF
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
PPTX
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
PPTX
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
PDF
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
PPT
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
PPTX
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
PPTX
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
PPTX
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
PPTX
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
PDF
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
PDF
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)
One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасье...
Масштабируя DNS / Артем Гавриченков (Qrator Labs)
Создание BigData-платформы для ФГУП Почта России / Андрей Бащенко (Luxoft)
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PostgreSQL Configuration for Humans / Alvaro Hernandez (OnGres)
Inexpensive Datamasking for MySQL with ProxySQL — Data Anonymization for Deve...
Опыт разработки модуля межсетевого экранирования для MySQL / Олег Брославский...
ProxySQL Use Case Scenarios / Alkin Tezuysal (Percona)
MySQL Replication — Advanced Features / Петр Зайцев (Percona)
Внутренний open-source. Как разрабатывать мобильное приложение большим количе...
Подробно о том, как Causal Consistency реализовано в MongoDB / Михаил Тюленев...
Балансировка на скорости проводов. Без ASIC, без ограничений. Решения NFWare ...
Перехват трафика — мифы и реальность / Евгений Усков (Qrator Labs)
И тогда наверняка вдруг запляшут облака! / Алексей Сушков (ПЕТЕР-СЕРВИС)
Как мы заставили Druid работать в Одноклассниках / Юрий Невиницин (OK.RU)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
100500 способов кэширования в Oracle Database или как достичь максимальной ск...
Apache Ignite Persistence: зачем Persistence для In-Memory, и как он работает...
Механизмы мониторинга баз данных: взгляд изнутри / Дмитрий Еманов (Firebird P...
Как мы учились чинить самолеты в воздухе / Евгений Коломеец (Virtuozzo)

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

  • 1. Что нового и полезного в PostgreSQL 9.5 Highload 2015 Илья Космодемьянский ik@postgresql-consulting.com
  • 2. Outline • Как устроены новые релизы PostgreSQL
  • 3. Outline • Как устроены новые релизы PostgreSQL Когда нам обновляться? Когда фичей X можно будет пользоваться?
  • 4. Outline • Как устроены новые релизы PostgreSQL Когда нам обновляться? Когда фичей X можно будет пользоваться? • Очень важные новинки версии 9.5 • Хорошие и полезные улучшения • Задел на будущее • Бонусы
  • 5. Как устроены релизы в PostgreSQL • http://www.postgresql.org/support/versioning/ • Релизы это 9.2.*, 9.3.*, 9.4.*, 9.5.* • Их стараются выпускать раз в год • Минорные релизы выпускают чаще, по мере накопления полезных исправлений в мажорные релизы • Жизненный цикл релиза – 5 лет, после этого сообщество ”снимает релиз с поддержки” – в него больше не вносятся исправления
  • 6. Как устроены релизы в PostgreSQL • http://www.postgresql.org/support/versioning/ • Релизы это 9.2.*, 9.3.*, 9.4.*, 9.5.* • Их стараются выпускать раз в год • Минорные релизы выпускают чаще, по мере накопления полезных исправлений в мажорные релизы • Жизненный цикл релиза – 5 лет, после этого сообщество ”снимает релиз с поддержки” – в него больше не вносятся исправления • Держать в production снятые с поддержки релизы – смелость, граничащая с безрассудством
  • 7. Версия 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
  • 8. Версия 9.5 • > 2000 файлов измененено • > 200 000 строк кода добавлено... • ...и примерно столько же удалено • Имеют-ли смысл эти цифры? Имеют, если сравнивать с предыдущим релизом
  • 9. Наиболее обсуждаемые фичи PostgreSQL 9.5 • Row level security (RLS) • SELECT ... FOR UPDATE SKIP LOCKED • Upsert: INSERT ... ON CONFLICT
  • 10. Row level security tt=# ALTER TABLE departments ENABLE ROW LEVEL SECURITY; ALTER TABLE postgres=# create policy kgb on departments for all to public USING (owner = CURRENT_USER) ; CREATE POLICY tt=# select * from departments; id | name | chief | owner ----+-----------------+--------------+--------- 1 | первый | майор Пронин | mpronin 3 | Духовного роста | Иван Иванов | ivanov 2 | АХЧ | Вася Пупкен | pupken (3 rows) tt=# c - ivanov You are now connected to database "postgres" as user "ivanov". postgres=> select * from departments; id | name | chief | owner ----+-----------------+-------------+-------- 3 | Духовного роста | Иван Иванов | ivanov (1 row)
  • 11. 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 -- Просто пропускаем те строки, на которые не можем взять блокировку. -- Очень полезно для всяких простых очередей
  • 12. Upsert problem: INSERT ... ON CONFLICT postgres=> insert into tt(name) values (’bar’); INSERT 0 1 postgres=> select * from tt; id | name ----+------ 1 | foo 2 | 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.
  • 13. Upsert: INSERT ... ON CONFLICT postgres=> insert into tt(id, name) values (2,’buzz’) on conflict do nothing; INSERT 0 0 postgres=> insert into tt(id, name) values (2,’buzz’) on conflict(id) do update set name=excluded.name || ’ edited’; INSERT 0 1 postgres=> select * from tt; id | name ----+------------- 1 | foo 2 | buzz edited (2 rows)
  • 14. Чуть менее маркетинговые, но очень важные фичи • Новые настройки WAL • recovery_target_action • BRIN индексы • Улучшения производительности • Расширены OLAP-возможности
  • 15. Новые настройки WAL • Было checkpoint_segments • Стало min_wal_size и max_wal_size Логичней и экономит место
  • 17. BRIN индексы • min/max • Сильно меньше B-tree • Предназначены для больших таблиц • Медленней читать чем B-tree
  • 18. Когда обновляться? • Ждем релиза в декабре • В марте-апреле оцениваем количество и критичность багов • Летом обновляемся • (Это не руководство к действию!)
  • 19. Questions? ik@postgresql-consulting.com slides will be available on http://blog.postgresql-consulting.com