Similar presentations:
Секционирование. Секционированная таблица
1.
Курс «Хранилища данных»Тема: Секционирование
Барабанщиков
Игорь Витальевич
1
2.
Секционирование• В ХД таблицы и
индексы могут иметь
очень большой
размер.
• Очень большие
таблицы и индексы
можно разбить
(секционировать) на
меньшие, более
управляемые части.
2
3.
Секционирование• Секционирование дает
возможность разделять
таблицы и индексы на
отдельные части
меньшего размера.
• Каждая часть объекта
базы данных называется
секцией.
• У секции есть
собственное имя и
могут быть собственные
характеристики
хранения.
3
4.
Секционированная таблицас точки зрения администратора БД
• С точки зрения АБД,
секционированный
объект состоит из
нескольких частей,
которыми можно
управлять всеми вместе
или по отдельности.
• Это обеспечивает
значительную гибкость в
управлении
секционированным
объектом.
4
5.
Секционированная таблицас точки зрения приложения
• Для приложения секционированная таблица
выглядит так же, как несекционированная.
• Для доступа к секционированной таблице с
помощью команд SQL DML никакие изменения не
требуются.
• Логически это по-прежнему одна таблица.
5
6.
Ключ секционирования• Важным шагом в создании
секционированной таблицы является
определение ключа секционирования.
• В качестве ключа секционирования может
выступить столбец или несколько столбцов,
относительно значений которых будет
делаться разнесение таблицы на секции.
• Oracle Database предоставляет широкий
выбор возможностей по секционированию.
6
7.
Стратегии секционирования7
8.
Стратегии секционирования8
9.
Секционирование по диапазону• Данные распределяются на основе диапазона значений
ключа.
• Распределение по диапазону ключей непрерывно без
каких-либо промежутков.
• Для определения диапазона всегда указывается
верхняя граница секции, исключая само указанное
значение, а нижняя граница определятся автоматически
по верхней границе предыдущей секции.
• Значения границ секций всегда увеличиваются.
• Как следствие, первая секция таблицы (с самой низкой
границей диапазона) всегда открыта в сторону меньших
значений.
• Последнюю секцию (с самым высоким значением
границы секции) при необходимости также можно
сделать открытой в сторону больших значений.
9
10.
Секционирование по диапазонуВ практике секционирования по методу Range
используем два вида секционирования: по диапазону
дат и по диапазону значений.
10
11.
Секционирование по списку значений• Распределение данных определяется
списком отдельных значений ключа
секционирования.
• Например, если в качестве ключа
секционирования используется столбец
региона, то секция North America может
включать значения Canada, USA и Mexico.
• Можно задать секцию DEFAULT (ПО
УМОЛЧАНИЮ) для всех значений ключа
секционирования, не вошедших явно ни в
один список.
11
12.
Секционирование по списку значенийСекционирование по списку применяется, если есть
возможность указать конкретный перечень дискретных
значений столбца, по которому происходит разбиение на
секции.
12
13.
Хеш-секционирование• Как правило, если не получается секционировать по
диапазону RANGE или LIST, то применяется хешсекционирование, основанное на хеш-функции.
• В этом случае строки таблицы равномерно
распределяются между секциями на основании
внутренних алгоритмов хеширования Oracle.
• При этом чем уникальнее значения столбца в
таблице, по которому идет секционирование, тем
лучше будет распределение данных по разделам.
• Первичный ключ или уникальный столбец
(столбцы) является самым хорошим хеш- ключом.
• Oracle рекомендует число секций N как степень 2,
т.е. N=2,4,8,16,32 и т.д.
13
14.
Хеш-секционированиеCREATE TABLE LISTIN
(TASKISN NUMBER,
OBJISN NUMBER,
PARAM NUMBER,
CONSTRAINT PK_LISTIN PRIMARY KEY
(TASKISN,OBJISN,OBJROWID,PARAM) )
ORGANIZATION INDEX
PARTITION BY HASH (TASKISN) PARTITIONS 16
14
15.
Хеш-секционирование• Если в качестве ключа секционирования
используется столбец, в котором имеем
очень неравномерное распределение
значения столбца (малая уникальность), то
применение хеш-секционирования не
целесообразно.
• При этом число секций не имеет особого
значения, поскольку все значения
ключевого столбца «свалятся» в одну-две
секции.
15
16.
Композитное секционирование• При составном секционировании внутри секции
создаются подсекции.
• Можно осуществлять составное секционирование в
следующих комбинациях: Range-Range, Range-Hash ,
Range-List, List-Range, List-Hash или List-List
16
17.
Композитное секционирование• Для определения таблицы с композитным
секционированием используется
комбинация двух методов распределения
данных.
• Сначала таблица секционируется одним
методом распределения данных.
• Затем каждая секция подразделяется на
подсекции с использованием другого
метода распределения данных.
17
18.
Преимущества секционирования• Можно производить
операции, связанные с
управлением, на
уровне разделов
(загрузка, сбор
статистики, очистка
данных)
• Секционирование
позволяет использовать
преимущества
параллельной
обработки данных.
18
19.
Преимущества секционирования• Оптимизатор SQL-запросов может исключать
сканирование секций, не содержащих искомых
данных.
19
20.
ИтогиСекционирование повышает эффективность
работы с таблицами и индексами в ХД.
20