Учебное пособие по секционированию PostgreSQL

Ucebnoe Posobie Po Sekcionirovaniu Postgresql



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

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

Как создать разделы PostgreSQL

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







1. Разделение списка

Прежде чем рассматривать какое-либо секционирование, мы должны создать таблицу, которую мы будем использовать для секционирования. При создании таблицы следуйте указанному синтаксису для всех разделов:



CREATE TABLE table_name(столбец1 тип_данных, столбец2 тип_данных) PARTITION BY (partition_key);

«Имя_таблицы» — это имя вашей таблицы, а также различные столбцы, которые она будет иметь, и их типы данных. Для «partition_key» это столбец, по которому будет происходить секционирование. Например, на следующем изображении показано, что мы создали таблицу «Курсы» с тремя столбцами. Более того, наш тип секционирования — LIST, и мы выбираем столбец факультета в качестве ключа секционирования:







После создания таблицы мы должны создать различные необходимые нам разделы. Для этого используйте следующий синтаксис:

СОЗДАТЬ ТАБЛИЦУ раздел_таблицы РАЗДЕЛ основной_таблицы ДЛЯ ЗНАЧЕНИЙ В (ЗНАЧЕНИЕ);

Например, первый пример на следующем изображении показывает, что мы создали таблицу разделов с именем «Fset», которая содержит все значения в столбце «факультет», который мы выбрали в качестве ключа раздела, значение которого равно «FSET». Мы использовали аналогичную логику для двух других созданных нами разделов.



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

Если мы перечислим все записи в основной таблице, мы увидим, что в ней есть все записи, которые мы вставили.

Чтобы убедиться, что мы успешно создали разделы, проверим записи в каждом из созданных разделов.

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

2. Разделение диапазона

Еще одним критерием создания разделов является использование опции RANGE. Для этого мы должны указать начальное и конечное значения, которые будут использоваться для диапазона. Использование этого метода идеально подходит при работе с датами.

Синтаксис создания основной таблицы следующий:

CREATE TABLE имя_таблицы (тип_данных столбца 1, тип_данных столбца 2) РАЗДЕЛЕНИЕ ПО ДИАПАЗОНУ (ключ_раздела);

Мы создали таблицу «cust_orders» и указали, чтобы она использовала дату в качестве нашего «partition_key».

Чтобы создать разделы, используйте следующий синтаксис:

СОЗДАТЬ ТАБЛИЦУ раздел_таблицы РАЗДЕЛ основной_таблицы ДЛЯ ЗНАЧЕНИЙ ОТ (начальное_значение) ДО (конечное_значение);

Мы определили наши разделы для работы ежеквартально, используя столбец «дата».

После создания всех разделов и вставки данных наша таблица выглядит вот так:

Если мы проверим записи в созданных разделах, мы проверим, что наше разделение работает и у нас есть только соответствующие записи, соответствующие указанным нами критериям разделения. Все новые записи, которые вы добавляете в таблицу, автоматически добавляются в соответствующий раздел.

3. Хэш-разделение

Последний критерий разделения, который мы обсудим, — это использование хеша. Давайте быстро создадим основную таблицу, используя следующий синтаксис:

CREATE TABLE имя_таблицы (столбец1 тип_данных, столбец2 тип_данных) РАЗДЕЛЕНИЕ ПО HASH (partition_key);

При секционировании с помощью хеша вы должны указать модуль и остаток, строки, которые будут разделены на хеш-значение указанного вами «partition_key». В нашем случае мы используем модуль 4.

Наш синтаксис следующий:

СОЗДАТЬ ТАБЛИЦУ раздел_таблицы РАЗДЕЛ основной_таблицы ДЛЯ ЗНАЧЕНИЙ С (МОДУЛЬ номер1, ОСТАТОК номер2);

Наши разделы следующие:

Для «main_table» она содержит записи, показанные ниже:

Для созданных разделов мы можем быстро получить доступ к их записям и проверить, работает ли наше разделение.

Заключение

Разделы PostgreSQL — это удобный способ оптимизации базы данных для экономии времени и повышения надежности. Мы подробно обсудили разделение, включая различные доступные варианты. Более того, мы предоставили примеры реализации разделов. Попробуйте их!