Жизнь продолжается. Продолжаем знакомить вас с самыми интересными новостями PostgreSQL
Главная новость
Feature Freeze
Функциональность 13-й версии PostgreSQL заморожена. Теперь только доработки и исправления багов. Список нового, вопреки многим ожиданиям, довольно обширный. Читайте нашу статью
Много ли нового в «Чёртовой дюжине», где много примеров. Но и в разделе Статьи Postgresso есть ссылки на статьи, посвященные отдельным фичам.
Релизы
Postgres Pro Enterprise 12.2.1
В этой версии совмещены новшества PostgreSQL 12 и особенности ветки Enterprise.
Расширение multimaster: как и в 11.x, и в других версиях Enterprise, рекомендуется использовать в конфигурации 2+1, когда один из узлов рефери. Подробнее в документации. А ещё теперь можно проверить согласованность данных на узлах кластера, используя функцию
mtm.check_query()
.В CFS теперь можно выбирать алгоритмы сжатия. Поддерживаются zstd (по умолчанию), zlib и pglz, но можно добавить другие алгоритмы.
Ещё одна ударная фича Enterprise — механизм PTRACK, необходимый для эффективной работы нашего приложения pg_probackup, — был основательно переработан и получил новый внешний API. Чтобы резервные копии, уже созданные с PTRACK в pg_probackup, работали в Postgres Pro Enterprise 12.x, нужно обновить pg_probackup до версии 2.2.6 или выше и настроить копирование PTRACK заново.
Важный патч дедупликации индексов B-tree (автор Анастасия Лубенникова, Postgres Professional) в PostgreSQL 13, но его функциональность уже есть в Enterprise 12.2.1. Причем исключение дубликатов можно отключить для создаваемых индексов, воспользовавшись параметром
deduplicate_items
команды CREATE INDEX. Об этом есть здесь.Ещё о нескольких новшествах кратко:
- Встроенный пул был экспериментальной фичей, теперь доработан до штатного режима.
- Добавлено расширение pgpro_stats, которое не только собирает статистику выполнения SQL-операторов, но и подсчитывает статистику событий ожидания.
- Для улучшения мониторинга в представление
pg_stat_activity
добавлено полеwait_state_id
. - В PostgreSQL 12 сокращен объём записей в WAL, генерируемых при создании индексов GiST, GIN и SP-GiST, в Postgres Pro это учли, но внесли изменения так, чтобы при этом формат индексов не поменялся.
- Добавлен параметр
plan_cache_lru_memsize
, ограничивающий объём памяти, которая может быть выделена для подготовленных операторов. По умолчанию это ограничение теперь равно 8 МБ, а если задан и «старый» параметрplan_cache_lru_size
, который задает не объем, а количество подготовленных операторов, то действовать будет ограничение, достигаемое первым.
Вышла и Postgres Pro Standard 12.2.1. Поскольку отличия от PostgreSQL в Standard не столь радикальны, как в Postgres Pro Enterprise, то просто отсылаем к чейнджлогу.
pgAdmin 4 version 4.20
В этом релизе добавлены Collation, FTS Configuration, FTS Dictionary, FTS Parser, FTS Template, Domain, Domain Constraints, и Types для Schema Diff.
О релизе читайте здесь, а загрузить можно отсюда.
WAL-G v0.2.15
В новой версии яндексовского бэкапа можно сокращать отставание (lag) реплики командами
catchup-push
и catchup-fetch
, создавая инкрементальный бэкап от заданного LSN с отставшей реплики. Появилась поддержка шифрования Libsodium, повторной попытки (Retryer) для AWS. repmgr 5.1
Бэкап от 2ndQuadrant обогатился существенными доработками: теперь требование, чтобы пользователь repmgr был суперюзером базы данных убрали отовсюду, откуда возможно. Обычный пользователь базы может копировать свою базу, а пользователь с ролью REPLICATION будет задавать соединения и слоты (если нужно). Но некоторые операции все же требуют опции
-S | --superuser
. Загружать отсюда.pgBackRest 2.25
Главная новость этого релиза — LZ4-сжатие. Добавлена полезная опция:
--dry-run
для команды expire
: можно просмотреть какие бэкапы/архивы будут удалены этой командой, ничего не удаляя. Можно ограничить размер бэкапа величиной, сообщенной в начале копирования, полагаясь на проигрывание WAL в случае распухания файла.check_pgbackrest 1.8
Вышла и новая версия утилиты мониторинга BackRest-а (ее разрабатывает не CrunchyData, как сам pgBackRest, а Dalibo). Появилась опция
--list-archives
: распечатать список всех заархивированных сегментов WAL.pgmetrics v1.9
Появился сбор метрик с AWS RDS и Aurora, сбор определений индексов, типов и количества бэкендов, проверка версий и окружения перед вызовом функций. И можно SET ROLE перед началом сбора метрик опцией
--role
. Релиз на гитхабе.pg_show_plans
Расширение, которое предлагает испробовать Ханс-Юрген Шёниг (Hans-Jürgen Schönig) из Cybertec, позволяет смотреть одновременно сразу все планы инстанса, активные в данный момент — прямо пока они еще исполняются. Он поясняет их работу в собственном блоге и на сайте компании. И не только он. pg_show_plans даже уже обсудили на Вторниках у Самохвалова (см. наш раздел Вебинары). Кстати, расширение pg_query_state, которое доступно в Postgres Pro Standard/Enterprise, интересная альтернатива. Но к ванильному PostgreSQL придется приложить патч.
Joe 0.6.2/1/0
Каемся: о появлении этой утилиты с интерфейсом чат-бота мы написали по две строчки в прошлом и позапрошлом Postgresso, хотя она достойна большего. Этот DBA-бот, как его называют разработчики из Postgres.ai, представляет собой инструмент для тестирования изменений в базе, не подвергая опасности промышленную базу, но и без долгого копирования в тестовую среду (терабайтные базы копируются за секунды). К тому же этот тестовый ресурс разделяемый: десяток разработчиков могут работать одновременно. Подробности Анатолий Станслер рассказал в докладе на Highload++, советуем посмотреть.
В версиях 0.6.2 и 0.6.1 только багфиксы, но зато в 0.6.0 появились интересные вещи: работа с гипотетическими индексами (с расширением HypoPG). С гипотетическими индексами работают составные команды, начинающиеся на
hypo
. Например: hypo reset
— убить все гипотетические индексы. Новая команда plan
отдаёт план, не исполняя запрос.Pyrseas 0.9.1
Эта версия расширения-утилиты для описания схемы БД на YAML/JSON, сверки схем БД с заданной отличается от предыдущих версий в основном поддержкой PostgreSQL 12. Вот страничка на PGXN.
pgFormatter 4.3
Добавлены две опции, починены баги:
-r | --redshift
для ключевых слов AWS Redshift;-N | --numbering
добавляет к каждой строчке префикс вида/* Statement # n */
;- поправили форматирование внутри предложения с WITH;
- поправили форматирование скриптов при работе с psql;
- кроме того добавлено несколько встроенных функций к списку PostgreSQL-функций.
pg_timeout 0.0.1
И еще одно расширение: с ним можно установить для сессии таймаут бездействия, определив его в двух GUC:
pg_timeout.naptime
: сколько секунд фоновый процесс спит между проверками бездействия (10 сек. по умолчанию)pg_timeout.idle_session_timeout
: сколько секунд сессии разрешено жить в бездействии (60 сек. по умолчанию).
Соответствующие уведомления появятся в логе. Номер релиза говорит за себя.
pg_logqueryid
А это расширение включает логирование идентификаторов запросов в
pg_stat_statements
, когда включен auto_explain
.Psycopg 2.8.5
Этот Python-коннектор теперь поддерживает платформу AIX.
pg_timetable 2.0
В этот планировщик заданий (scheduler) добавлены возможности управления: можно пометить задания как
@reboot
, @every
или @after
.pgBadger 11.2
В популярный анализатор логов Жиля Дароля (Gilles Darold) добавлены:
- поддержка и автораспознавание формата логов AWS Redshift;
- поддержка нового формата логов pgbouncer 1.11;
- поддержка сжатия zstd и lz4;
- можно запускать утилиту вот так:
pgbadger -I -O "/out-dir/data" --noreport /var/log/postgresql*.log
или - так:
pgbadger -I -l "/out-dir/data/LAST_PARSED" -H "/out-dir/reports" /out-dir/data/2020/02/19/*.bin
.
PAF v2.3.0
Версия этого очень популярного в России отказоустойчивого решения от ClusterLabs, основанного на Pacemaker+Corosync, отличается прежде всего поддержкой PostgreSQL 12. Она не будет работать с версиями более древними, чем Pacemaker 1.1.13 + corosync 2.x.
pgagroal 0.5.1
Новую версию пулера можно скачать отсюда: исходники, RPM.
Облака
Amazon RDS Now Supports PostgreSQL 12
В анонсе говорится, что вместе с релизом вы получите (в числе прочих) обновленные расширения:
PostGIS 3.0,
PGAudit 1.4,
wal2json 2.1,
PLV8 2.3.14,
Orafce 3.8,
pg_repack 1.4.5,
pg_hint_plan 1.3.5.22a77c,
pglogical 2.3.0.
How to Authenticate Postgres Users Against Amazon AWS Cognito
Не найдя удовлетворительного ответа по аутентификации в Cognito для PostgreSQL, Эрнст-Георг Шмид (Ernst-Georg Schmid) ака ergo сам написал скрипт cognito_PAM.py облегчающий аутентификацию пользователей PostgreSQL и pgbouncer.
Статьи
Начнем со статей на лютую злобу дня. Но эти две статьи интересны отнюдь не только актуальной повесткой, они познавательны в техническом смысле.
Charting the spread of COVID-19 using data
В блоге Timescale по шагам показывают, как составлять запросы для построения карт распространения вируса. Данные автор брал с гитхаба Университета Джона Хопкинса, заливал в TimescaleDB, а для визуализации на карте использовал Grafana.
Intersecting GPS-Tracks to identify infected individuals
Статья на Cybertec с множеством картинок и листингов. Для обнаружения контактов зараженных используются оконные функции, а для визуализации траекторий движения обладателей вируса — QGIS.
Create and Visualize Machine Learning Models Using 2UDA
2ndQuadrant (эта компания необыкновенно активна в эти непростые времена: вебинары и статьи прибывают потоком) в этой статье предлагает испробовать свой набор приложений для аналитики, где есть в том числе и пакет машинного обучения. 2UDA интегрируется в среду Orange и обменивается данными с PostgreSQL вплоть до последней его версии — 12.2. На этот раз учат работе со Случайным Лесом. В предыдущих статьях серии учили SVM (он же Метод Опорных Векторов) и искать ближайших соседей (KNN).
А вот их же серия о разработке PostgreSQL для Windows: части 3 2 1.
Comparing MongoDB vs Postgres over JOINs
Надо бы начать не с названия статьи, а с авторов: Майкл Стоунбрейкер (Michael Stonebraker, тот самый) и Альваро Эрнандес (Álvaro Hernández). Альваро, впрочем, тоже «тот самый» — он неоднократно выступал на конференциях в Москве: вот, например, его доклад о StackGres на PGConf.Russia 2020. Ну а тема сравнения NoSQL с Postgres пока не потеряла актуальности.
10 Things I Hate About Postgres
Очередная холодная фаза контрастного душа Postgres vs Другие СУБД. Некоторые высказывания Рика Брэнсона (Rick Branson) весьма жестки. Например: масштабируемость процессов всё лучше и лучше с каждым мажорным релизом. Но в конце концов есть жесткий предел производительности, обусловленный архитектурой Postgres в сравнении с тем же MySQL с его один тред на соединение.
Parallel Query Inside Function
Абдул Йади (Abdul Yadi) анализирует происходящее внутри функций SQL и PL/pgSQL. Он обнаружил, что параллельное исполнение запроса, работающее в SQL запросах без функций, отключено при исполнении функций SQL и PL/pgSQL. И показывает уловку, как включить параллелизм и в PL/pgSQL.
Monitoring the query planner
Жульен Руо (Julien Rouhaud) пишет в своем Домике Жужу о мониторинге Планировщика.
Waiting for PostgreSQL 13 – Allow pg_stat_statements to track planning statistics
Хуберт «Депеш» Любашевский пишет об этом патче, и о том, как тестировал его на pgbench и о том, как можно нарваться на долгое планирование запроса (план не используется повторно). Кстати, в нашем обзоре тоже есть примеры с pg_stat_statements.
PostgreSQL Person of the Week: Michael Paquier
Мишель Пакье (он родился и учился во Франции, а последнее работает в Японии), многим хорошо знакомый по рассылке hackers, начинал работать еще с версией 8.3. На вопрос о любимом расширении отвечает: pg_stat_statement! (восклицательный знак его), а из фич последних версий выбирает TableAM.
А вот выбор персоной недели Айларии Баттисон (Ilaria Battiston) был непредсказуем: она 22-летняя студентка-итальянка, изучающая Data Engineering в Техническом Университете Мюнхена. Чем она заслужила титул — читайте.
Пишем в PostgreSQL на субсветовой: 1 host, 1 day, 1TB
Кирилл Боровиков ака Kilor (компания «Тензор») пишет о том, как можно сделать более эффективной запись в БД, правильно организовав потоки данных. Спойлер: начинают с секционирования. Эту тему автор трогал и в предыдущей статье, но тогда в теории, а теперь на собственном опыте.
PostgreSQL's 'Related Projects'
Андреас Шербаум (Andreas Scherbaum) напоминает, что на postgresql.org появилась новая страничка о проектах, имеющих отношение к PostgreSQL, такие как pgweb, pglister, PostgreSQL Build Farm и других.
A Beginners Guide to Basic Indexing in Postgres
Действительно для начинающих. Для продолживших, напомним, есть серия статей Егора Рогова erogov об индексах (впрочем, у нас есть и малютка, она же Первое знакомство, где, конечно, можно прочитать и об индексах).
Useful Queries for Postgres Index Maintenance
Ибрар Ахмед (Ibrar Ahmed) из Percona в недлинной статье дает основы слежки за работой индексов при помощи типичных запросов к таблицам каталога.
Здоровье индексов в PostgreSQL глазами Java-разработчика
Иван Вахрушев (Яндекс) написал библиотеку pg-index-health, а в этой статье он и рассказывает, как использовать его скрипты [UPD: автор актуализировал ссылки в статье]. Иван признается, что устроил великую чистку, воодушевившись докладом Олега Бартунова и Александра Короткова. Все нужные SQL-скрипты можно найти по ссылкам в статье и в репозитории.
Образование на дому
«Вспомнить всё» или #сидимдома с пользой
На этой странице сейчас собраны ссылки на все курсы отдела образования Postgres Professional.
Но курсы можно смотреть и как плейлисты Youtube.
Вебинары и митапы
Postgres-вторники
Их проводят Николай Самохвалов (Postgres.ai) и Илья Космодемьянский (DataEgret).
#16: c участием Максима Богука и Викторв Егорова (оба DataEgret). Обсуждалось: как добиться того, чтобы приложение исправно работало даже при неожиданном скачке нагрузки в 5 раз.
#15. Обсуждалось темы: PostgreSQL is the Linux of databases; ещё раз о GiST; несколько отличных улучшений в PostgreSQL 13 — у pg_stat_statements и EXPLAIN; Macro-analysis: Planning stats in pg_stat_statements; Micro-analysis: WAL stats in EXPLAIN; pg_show_plans от Cybertec.
#14: Ошибки разработчиков при работе с Postgres. Гость: Павел Биссе.
#13: Пример работы с JSON в Postgres (+CTE, LATERAL, интервалы, GiST-индекс).
2ndQuadrantовские ближайшие вебинары
Date/Timestamp types in PostgreSQL
22 апреля, Эндрю Данстэн (Andrew Dunstan).
KNN Indexing in PostgreSQL
29 апреля, Кирк Ройбал (Kirk Roybal).
Регистрация и список на страничке их вебинаров.
Конференции
PGCon 2020
Пройдет 26-29 мая в режиме онлайн.
Из материалов прошедших конференций, например:
Easy And Correct High Availability Postgres with Kubernetes
Postgres Open выкладывает видео с конференций Postgres Open, которые проводит (проводило и, надеемся, будет проводить после деизоляции) комьюнити в США. В этом докладе с Postgres Open 2019 Стивен Паусти (Steven Pousty) из Crunchy Data рассказывает о высокодоступном PostgreSQL от распаковки контейнеров до практических действий.
PGConf.Russia
Имейте в виду, что бОльшая часть видео, не говоря о слайдах, доступна на сайте конференции.
Highload++
Доклады, видимо, удобней смотреть на youtube-канале конференции.
Новости этики
The Code of Conduct Committee 2019 Annual Report
17 марта Комитет по Кодексу Постгресиста отчитался о проделанной работе. Из широко известных в кругах российских постгресистов можно увидеть Илью Космодемьянского. Из отчета, к счастью, следует, что пока ни один прогресист не был забанен.
Slave — всё
Напоминаем, что окончательно упразднены рабы по всей документации Postgres: Slave стал Standby в репликации. В секционировании master стал root, а slave — leaf.
Подписывайтесь на канал postgresso!
Идеи и пожелания присылайте на почту: news_channel@postgrespro.ru
Предыдущие выпуски: #19, #18, #17, #16, #15, #14, #13, #12, #11 (спец), #10, #9, #8, #7, #6, #5, #4, #3, #2, #1