Сегменты и партиции. В чём различие?
О сегментах и партициях
Сегмент – блок таблицы данных, полученный путём отбора строк по заданному уникальному значению ключа сегментирования. Сегментирование происходит логически: деление на блоки позволяет удалить соответствующую группу записей и заменить её новыми, обеспечивая инкрементальность данных.
Партиция – физическая часть таблицы данных, выделенная для удобства хранения и обработки. Таблица, разбитая на партиции, называется партицированной. Партицирование поддерживается для PostgreSQL и ClickHouse.
Как работают сегменты
Для наглядности создадим проект для выгрузки данных с сегментированием. Выгрузим выручку и себестоимость продаж. Разделим данные по периоду:
Выберем несколько полей, настроим таблицу, как обычно, и на этапе маппинга укажем параметры для сегментирования. Необходимо отметить эти поля флагами (галочками):
В то же время настройки партиций пока оставляем пустыми:
Способ обновления в настройках строки при этом установится в “Обновление сегмента”.
Выполним выгрузку. Таблица выгружается с заданными полями. Чтобы понять, какие строки удаляются для обновления сегмента, используется поиск по индексируемому полю “ПараметрПериод”:
То есть сегмент удаляется, а вместо него добавляется новый. Так работают сегменты.
Как работают партиции
Теперь разберем, что такое партиции и как они функционируют.
Изменим наш проект. Уберем флаг сегмента у параметра, а вместо сегментирования зададим партицирование на этапе расширенных настроек:
Затем поменяем способ обновления на “Перезапись партиции” в настройках строки проекта.
Что происходит в этом случае?
При партицировании таблица физически разбивается на несколько файлов на диске. При обновлении партиция удаляется целиком (команда drop partition), после чего данные записываются заново. Каждый файл в директории данных СУБД хранит отдельную партицию.
Заключение
Основное отличие: сегмент – индексируемое поле (логическое деление), партиция – физические файлы (физическое деление). При работе с партициями запрос SELECT открывает все файлы таблицы, что при большом числе партиций может достичь ограничений файловой системы. При сегментировании открывается один файл с поиском по индексу – это быстрее.
Смотрите также
Справочник понятий и концепций
Интеграция с "1С:Предприятие"
На этой странице
Нужна дополнительная помощь?