PostgreSQL 17: Часть 2 или Коммитфест 2023-09

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Продолжаем следить за новинками 17-й версии PostgreSQL. На этот раз поговорим о том, чем запомнился сентябрьский коммитфест.


Самое интересное об июльском коммитфесте ― в предыдущей статье серии: 2023-07.


Удален параметр old_snapshot_threshold
Новый параметр event_triggers
Новые функции to_bin и to_oct
Новое системное представление pg_wait_events
EXPLAIN: счетчик времени на JIT-компиляцию преобразования кортежей
Планировщик: уточнение оценки начальной стоимости узла WindowAgg
pg_constraint: ограничения NOT NULL
Нормализация CALL, DEALLOCATE и команд управления двухфазной фиксацией
unaccent: целевое выражение правил поддерживает значения в кавычках
COPY FROM: FORCE_NOT_NULL и FORCE_NULL
Аудит подключений без аутентификации
pg_stat_subscription: новый столбец worker_type
Функция pg_promote при неуспешном переключении на реплику
Выбор метода синхронизации с диском в утилитах сервера
pg_restore: оптимизация восстановления в несколько потоков большого количества таблиц
pg_basebackup и pg_receivewal с параметром dbname
Имена параметров для ряда встроенных функций
psql: \watch min_rows



Удален параметр old_snapshot_threshold
commit: f691f5b8


В версии 9.6 появился параметр old_snapshot_threshold. Параметр определяет время для снимка данных, в течение которого гарантируется, что старые версии строк не будут удалены. По истечении этого времени очистка имеет право вычищать версии строк, видимые в снимке. При обращении к удаленным версиям строк транзакция получит ошибку, так знакомую пользователям Oracle: «Snapshot too old».


В реализации обнаружили проблемы, в том числе с производительностью, а элегантного решения пока не нашлось. Поэтому параметр удалили.



Новый параметр event_triggers
commit: 7750fefd


Параметр event_triggers включает/отключает триггеры событий.


\dconfig+ event_triggers

               List of configuration parameters
   Parameter    | Value | Type |  Context  | Access privileges
----------------+-------+------+-----------+-------------------
 event_triggers | on    | bool | superuser |
(1 row)

Предназначен в первую очередь для отладки триггеров. Ранее в документации к команде CREATE EVENT TRIGGER предлагалось запускать сервер в однопользовательском режиме, если ошибочно работающий триггер не удается удалить.



Новые функции to_bin и to_oct
commit: 260a1f18


К уже существующей функции to_hex для шестнадцатеричных чисел добавлены функции для перевода в двоичную и восьмеричную системы счисления:


SELECT to_bin(2), to_oct(8), to_hex(16);

 to_bin | to_oct | to_hex
--------+--------+--------
 10     | 10     | 10
(1 row)

См. также
Waiting for PostgreSQL 17 – Add to_bin() and to_oct(). – select * from depesz;



Новое системное представление pg_wait_events
commit: 1e68e43d


В документации к представлению pg_stat_activity для описания столбцов wait_event_type и wait_event прилагаются таблица с описанием типов событий ожидания и несколько таблиц с описанием событий ожидания каждого типа. Эти же описания теперь можно получить запросом к новому системному представлению pg_wait_events.


Это может быть удобно в системах мониторинга для получения описания ожиданий текущих процессов. Чем сейчас занят процесс контрольной точки?


SELECT a.pid, a.state, a.wait_event_type, a.wait_event, w.description
FROM pg_stat_activity a JOIN pg_wait_events w
     ON (a.wait_event_type = w.type AND a.wait_event = w.name)
WHERE a.backend_type = 'checkpointer'\gx

-[ RECORD 1 ]---+---------------------------------------------
pid             | 21090
state           |
wait_event_type | Activity
wait_event      | CheckpointerMain
description     | Waiting in main loop of checkpointer process


EXPLAIN: счетчик времени на JIT-компиляцию преобразования кортежей
commit: 5a3423ad


В выводе EXPLAIN ANALYZE, а также в pg_stat_statements, отдельно учитывается время, затраченное на JIT-компиляцию преобразования кортежей (tuple deforming).


В следующем запросе JIT-компиляция используется для вычисления числа

Источник: https://habr.com/ru/companies/postgrespro/articles/769598/


Интересные статьи

Интересные статьи

27 февраля 1989 года Intel Corp. поразила мир высоких технологий, представив первый в мире микропроцессор с 1 миллионом транзисторов. Рассказываем, как он создавался от черновика до выхода на рынок.
Итак, вы уже получили всю необходимую информацию в результате разведки — о том, как это сделать мы говорили в первой части статьи.  Помните, на чем мы остановились? Мы предупреждали, что выполнят...
За время праздников я подготовил для вас вторую порцию предсказаний по развитию цифровых камер на ближайшие годы. Если пропустили первую часть, почитать её можно здесь. Итак, продолжим.
Всем привет! Меня зовут Роман Аймалетдинов, я разрабатываю клиентское приложение Ситимобил. Продолжаю свою серию статей по JNI, так как технология используется редко, но иногда она бывает очень полезн...
Публикуем вторую часть материала о трансформерах. В первой части речь шла о теоретических основах трансформеров, были показаны примеры их реализации с использованием PyTorch. Здесь поговорим о том, ка...