Другое

Секционирование PostgreSQL 12. Его разновидности и инструкция к ним

Lorem ipsum dolor

Секционирование таблиц PostgreSQL появилось еще в десятой версии продукта, и с тех пор оно только развивается. К примеру, уже в 11-й версии начало проводиться секционирование по хешу и секции. Легче стало перемещать запись в необходимую секцию, исключать или добавлять секции и т.д.

Как вы помните, PostgreSQL — это свободная Система Управления Базой Данных, в простонародье — СУБД. Активно стала развиваться последние 17 лет и представляет собой серьезную альтернативу многим коммерческим СУБД (Oracle, Microsoft SQL и др.). PostgreSQL можно реализовать на различных платформах:

  • Линукс во всем его многообразии;
  • Mac OS;
  • WIN32;
  • FreeBSD и др.

Самой сильной стороной данной СУБД является ее уникальная архитектура, позволяющая ее применение в варианте пользователь-сервер. Наверное, поэтому PostgreSQL достигла такой популярности.

Сегодня мы отметим ряд преимуществ, которые нам дает секционирование в PostgreSQL 12.

Производительность «COPY»

До 12-й версии PostgreSQL использовать «copy» в таблицу можно было только по одной строке. Теперь же данный оператор поддерживает массовые вставки в таблицу.

Проводя тест с кодом «copy», получили следующие результаты: когда увеличивается количество секций, работа кода притормаживается. Но в то же время при уменьшении количества строк на раздел, код ускоряется. Снижение скорости связано с тем, что для каждой строчки «copy» может предоставить до 999 слотов.

Производительность «INSERT»

В PostgreSQL 12 секционирование улучшилось и за счет повышения производительности «вставки». В прежних версиях, когда выполнялся «insert» в таблицу, все ее разделы блокировались, независимо от того, работали они в данный момент или нет. В новой версии СУБД все по-другому.

В новой PostgreSQL 12 блокирование секции происходит прямо перед тем, как в нее вставляется запись. То есть при добавлении одной строки блокируется только одна секция, а не как раньше — все. Именно поэтому секционирование в PostgreSQL 12 стало более производительным. Особенно это заметно, когда у нас большое количество секций в таблице, а вставлять нужно только одну строчку.

Производительность «SELECT»

Со времен внедрения секционирования в PostgreSQL «выборка» претерпела ряд изменений, и окончательно улучшилась ее производительность только в 12-й версии:

  • В PostgreSQL 10 каждая секция проверялась последовательно на наличие ограничений и необходимой информации.
  • В PostgreSQL 11 пошли немного дальше и добавили исключение секций, в которых нет необходимости.Немного ускорилась работа, но все равно выполнялись ненужныедействияпрогружались метаданные абсолютно всех секций: и нужных, и ненужных;
  • В PostgreSQL 12 все исправили, теперь метаданные загружаются только после полного исключения ненужных секций, и производительность улучшилась.

Особенно заметны изменения в скорости работы, когда у вас большое количество разделов и секций.

Секционирование PostgreSQL 12 и его улучшения

В PostgreSQL 12 было внедрено еще несколько интересных, но, возможно, не столь важных улучшений, о которых тоже нужно рассказать. Некоторые из них:

  1. Упорядочено сканирование разделов. В новой версии данной СУБД сканирование разделов может производиться в неявном порядке по методу LIST или RANGE. При данном решении отсутствуют бесполезная сортировка и сравнение.
  2. Можно избавиться от плана Append и MergeAppend. Избавление от них дает небольшой прирост в производительности.
  3. Другие изменения: возможность исключить разделы прямо во время выполнения, добавлена инструкция по манипулированию битами, ряд изменений внесен в «executor», улучшено использование метода «Range» и мн.др.

Как видно из описанного выше, секционирование в PostgreSQL 12 действительно было улучшено, если сравнивать с прежними версиями данной СУБД. Поэтому имеет смысл переходить на эту версию, тем более если работа с базой у вас предполагает наличие большого количества секций и разделов.

 

Схожие статьи

Переключение стилей в CSS: как реализовать и зачем это нужно
Другое

Переключение стилей в CSS: как реализовать и зачем это нужно

Библиотека распознавания речи: что это и какие существуют
Другое

Библиотека распознавания речи: что это и какие существуют

Другое

Новые наушники от Apple: комфорт и качество звука в новых AirPods 3

Что означает ошибка C0000034 при операции обновления Windows
Другое

Что означает ошибка C0000034 при операции обновления Windows

×