Учебники

SAP HANA Admin — Разделение таблицы

Используя Partitioning, вы можете разбить таблицы хранилищ столбцов на меньшие таблицы в системе с несколькими хостами. Вы можете даже разделить таблицы на более мелкие, более управляемые части, используя разбиение. Разбиение можно выполнить с помощью операторов SQL DML.

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

Ниже приведены преимущества использования разделения таблиц:

Разделение Обрезка

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

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

Балансировки нагрузки

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

Ограничение размера

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

Улучшенная операция слияния Delta

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

Параллельная обработка запросов

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

Давайте теперь обсудим типы разделений.

Одноуровневое разбиение

В системе SAP HANA доступны различные типы одноуровневых разделов —

  • Хеш-разделение
  • Круглый Робин
  • Разделение диапазона

В хеш-секционировании строки распределяются равномерно для балансировки нагрузки. Вам не требуется подробная информация о содержимом таблицы в этом типе разбиения.

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

Чтобы создать 4 раздела таблицы с помощью Round Robin, вы можете использовать следующие SQL-запросы. Первичные ключи не должны быть определены.

CREATE COLUMN TABLE TABLENAME (a INT, b INT, c INT) 
PARTITION BY ROUNDROBIN PARTITIONS 4 

Эта команда создаст 4 раздела таблицы.

команда

CREATE COLUMN TABLE Table_Name (a INT, b INT, c INT, PRIMARY KEY (a,b)) 
PARTITION BY HASH (a, b) PARTITIONS 4 

Это создаст 4 раздела в столбцах a и b , и вам нужно указать хотя бы один столбец.

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

В разделе «Разделение по диапазонам» вы создаете выделенные разделы для определенных значений, и вы должны хорошо разбираться в содержании таблицы для столбцов разделения.

Пример — создание одного раздела для каждого календарного месяца.

CREATE COLUMN TABLE TABLE_NAME (a INT, b INT, c INT, PRIMARY KEY (a,b)) 
PARTITION BY RANGE (a) 
(PARTITION 1 <= VALUES < 10, PARTITION 10 <= VALUES < 20, 
PARTITION VALUE = 50, PARTITION  OTHERS) 

Это создаст 4 раздела, один для диапазона от 1 до 10, второй от 10 до 20, 3- й для значения 50 и 4- й для всех остальных значений.

Многоуровневое разбиение

В многоуровневом разделении вы можете преодолеть ограничение одноуровневого разделения HASH и RANGE на использование ключевых столбцов в качестве столбцов разделения. Используя многоуровневое разбиение, вы можете разбить столбец, который не является первичным ключом. Наиболее распространенным типом многоуровневого разделения является HASH-Range Partitioning .

В многоуровневом разбиении Hash-Range вы реализуете разделение Hash на первом уровне, чтобы реализовать балансировку нагрузки, и разделение Range на втором уровне, чтобы реализовать разбиение по времени.

CREATE COLUMN TABLE Table_name (a INT, b INT, c INT, PRIMARY KEY (a,b))
PARTITION BY HASH (a, b) PARTITIONS 4,
RANGE (c) (PARTITION 1 <= VALUES < 10, PARTITION 10 <= VALUES < 20) 

Вместо использования хэш-разбиения на первом уровне, вы также можете использовать разбиение Round Robin, и оно известно как многоуровневое разбиение Round Robin-Range .