Разделение PostgreSQL 101
Мы можем определить до и после разбиения на разделы в Postgres. Сейсмический сдвиг произошел в PG 10 (2017), когда впервые появился декларативный подход к разделению.
Подход к разделению до PG 10 был очень громоздким для реализации и обслуживания, но это не относится к новому подходу.
Начиная с PG 10 и до сих пор, каждый выпуск PG улучшал DDL и функциональные возможности, которые мы рассмотрим сейчас.
Знакомство с DDL для базового секционирования
Это был новый подход, который позволил нам использовать PG 10, который позволяет нам разбивать по диапазону, например по дате:
Учитывая предыдущую таблицу, у нас может быть две стратегии разделения для диапазона: диапазон и список.
(PG 11 дала нам еще один вариант «Хэш», который мы рассмотрим в следующем посте)
Давайте проверим эти две стратегии из PostgreSQL 10:
RANGE: диапазон значений для каждого секционированного столбца
СПИСОК: список значений для каждого секционированного столбца.
ДИАПАЗОН
Сначала давайте посмотрим, как создать раздел с помощью Range. На следующем снимке экрана обратите внимание, что здесь у разделов есть имя, означающее, что они не являются анонимным объектом.
Каждому разделу назначается диапазон значений для раздела. В следующем случае вы создаете раздел за январь 2019 года.
Другой вариант — определить раздел путем присоединения таблицы, в которой уже могут быть данные:
Важно отметить: Интервал «От — до» закрыт слева, открыт справа, то есть за микросекунду до той величины, которую вы указали в значении «До». Этот подход особенно полезен, чтобы избежать проблем с дополнительными секундами и других крайних случаев.
Если вы знакомы с секционированием до PG 10, ничего больше не нужно, чтобы получить кортеж в партиции, никаких триггеров, никаких правил, ничего!, это большое улучшение не только в простоте, но и в производительность, что дает огромное 10-кратное улучшение по некоторым показателям.
Вы также можете сделать разделы для 2 столбцов, но, насколько я знаю, это не очень полезно, так как не существует общеизвестного варианта использования этой функции, и в силу краткости здесь мы не будем проверять этот вариант использования в дальнейшем. деталь.
СПИСОК разбиения
Мы будем использовать ENUM в качестве списка с его кратким DDL и другими функциями (которые вы можете проверить в моих статьях о ENUM).
Легко сделать таблицу клиентов, где каждый клиент из южноамериканской страны.
Как вы можете видеть в следующих двух таблицах на иллюстрации, вы можете легко определить раздел для каждого клиента в Колумбии или раздел, который смешивает клиентов из Аргентины и Чили.
На сегодня все, в следующий раз рассмотрим разбиение по хешу :-)
Спасибо Альваро Эррере за предоставление всей основы для этой статьи. Подпишитесь на него @alvherre