Изменения

Перейти к: навигация, поиск

Секционирование

1047 байт добавлено, 23:28, 26 декабря 2021
Комментарии к управлению секцинированием, дополнения и исправления опечаток
|definition =
'''Секционирование''' — это разделение таблицы базы данных на отдельные фрагменты с раздельными настройками физического хранения.}}
 Фрагменты могут хранится на разных компьютерах или дисках одного компьютера. Используется Секционирование используется в целях повышения производительности и доступности больших баз данных. Это достигается за счет параллельного чтения и записи на различных дисках, а также работы оптимизатора запросов.
== Типы секционирования ==
=== Вертикальное ===
Разбиение таблицы "по столбцам"«по столбцам». Условие корректности: секции содержат надключ (следует из теоремы Фейгина).
Преимущества:
* Отделение "частых" «частых» данных от "редких"«редких»
* Защита информации (можно задать разные права доступа на разные секции)
* Автоматическая поддержка для CLOB и BLOB (они хранятся отдельно от записи)
=== Горизонтальное ===
Разбиение таблицы "по строкам"«по строкам». Условие корректности: каждая строка попадает ровно в одну секцию.
Преимущества:
* Отделение "близких" «близких» данных от "дальних" «дальних» (например, зависящих от времени).
* Уменьшение размера секции
* Встроенная поддержка
** По хешу (записи разбиваются по хеш значению заданного набора столбцов)
* По выражению (секция задается любым методом простого секционирования)
* Составные (секции ращбиваются разбиваются на подсекции, например, сначала по диапазону, а затем по хешу) При попытке записи значения, которое не попадает ни в одну секцию, происходит ошибка.
== Управление секциями ==
Управление секционированием не входит в стандарт SQL, поэтому для различных баз данных приведенные запросы могут иметь отличный синтаксис.
==== Удаление секции ====
==== Разбиение секции ====
Разбиение одной секции на несколько. Получаемые секции должны быть согласованы, например, исходный диапазон полностью разбивается на несколько поддиапазонов.
 
'''alter table''' <font color=red>таблица</font> '''reorganize''' <font color=red>секция</font> '''into ('''...''')''';
==== Перехеширование ====
В случе секционирования по хешу можно изменить количество бакетов, но нельзя повлиять на размещение записей по бакетам.
 
'''alter table''' <font color=red>таблица</font> '''add partition''' <font color=red>число</font>''';'''
'''alter table''' <font color=red>таблица</font> '''coalesce partition''' <font color=red>число</font>''';'''
Типы индексов:
* Локальный - один на секцию* Глобальный - один на таблицу* Секционированный - разбит на секции по-своему
Локальный и глобальный индекс нужны для оптимизации запросов.
Анонимный участник

Навигация