Секционирование — различия между версиями
(управление секциями дополнено) |
(горизонтальное и методы) |
||
Строка 8: | Строка 8: | ||
=== Вертикальное === | === Вертикальное === | ||
− | TBF | + | Разбиение таблицы "по столбцам". Условие корректности: TBF |
+ | Преимущества: | ||
+ | - TBF | ||
+ | |||
+ | Недостатки: | ||
+ | - TBF | ||
+ | |||
+ | Пример: | ||
+ | - TBF | ||
=== Горизонтальное === | === Горизонтальное === | ||
− | + | Разбиение таблицы "по строкам". Условие корректности: каждая строка попадает ровно в одну секцию. | |
+ | Преимущества: | ||
+ | - Отделение "близких" данных от "дальних" (например, зависящих от времени). | ||
+ | - Уменьшение размера секции | ||
+ | - Встроенная поддержка | ||
+ | - Прозрачность для пользователя | ||
+ | |||
+ | Недостатки: | ||
+ | - Возможное замедление работы | ||
+ | |||
+ | Пример: | ||
+ | - Таблица Points(SId, CId, Mark, Date) | ||
+ | - Секции разбиты по Date на основе года. | ||
== Методы секционирования == | == Методы секционирования == | ||
* Простые | * Простые | ||
− | ** По диапазонам | + | ** По диапазонам (задается границами) |
− | ** По значениям | + | ** По значениям (списки конкретных значений) |
− | ** По хешу | + | ** По хешу (записи разбиваются по хеш значению заданного набора столбцов) |
− | * По выражению | + | * По выражению (секция задается любым методом простого секционирования) |
− | * Составные | + | * Составные (секции ращбиваются на подсекции, например, сначала по диапазону, а затем по хешу) |
− | |||
− | |||
== Управление секциями == | == Управление секциями == | ||
Строка 36: | Строка 54: | ||
'''alter table''' <font color=red>таблица</font> '''coalesce partition''' <font color=red>число</font>''';''' | '''alter table''' <font color=red>таблица</font> '''coalesce partition''' <font color=red>число</font>''';''' | ||
− | ==== | + | ==== Оптимизация запросов ==== |
− | Оптимизатор запросов умеет использовать секционирование для повышения производительности. Например, может быть оптимизирована операция '''select''' со сравнениями, '''=''', '''in''', '''between'''. | + | Оптимизатор запросов умеет использовать секционирование для повышения производительности. Ненужные секции могут быть отброшены, а запросы на оставшихся станут параллельными. Например, может быть оптимизирована операция '''select''' со сравнениями, '''=''', '''in''', '''between'''. |
==== Индексы ==== | ==== Индексы ==== | ||
− | Индексы могут быть секционированы. | + | Индексы могут быть секционированы. TBF |
Версия 18:58, 16 декабря 2021
Определение: |
Секционирование — это разделение таблицы базы данных на отдельные фрагменты с раздельными настройками физического хранения. |
Фрагменты могут хранится на разных компьютерах или дисках одного компьютера. Используется в целях повышения производительности и доступности больших баз данных. Это достигается за счет параллельного чтения и записи на различных дисках.
Содержание
Типы секционирования
Вертикальное
Разбиение таблицы "по столбцам". Условие корректности: TBF Преимущества: - TBF
Недостатки: - TBF
Пример: - TBF
Горизонтальное
Разбиение таблицы "по строкам". Условие корректности: каждая строка попадает ровно в одну секцию. Преимущества: - Отделение "близких" данных от "дальних" (например, зависящих от времени). - Уменьшение размера секции - Встроенная поддержка - Прозрачность для пользователя
Недостатки: - Возможное замедление работы
Пример: - Таблица Points(SId, CId, Mark, Date) - Секции разбиты по Date на основе года.
Методы секционирования
- Простые
- По диапазонам (задается границами)
- По значениям (списки конкретных значений)
- По хешу (записи разбиваются по хеш значению заданного набора столбцов)
- По выражению (секция задается любым методом простого секционирования)
- Составные (секции ращбиваются на подсекции, например, сначала по диапазону, а затем по хешу)
Управление секциями
Удаление секции
alter table таблица drop partition секция;
Разбиение секции
alter table таблица reorganize секция into (...);
Перехеширование
alter table таблица add partition число; alter table таблица coalesce partition число;
Оптимизация запросов
Оптимизатор запросов умеет использовать секционирование для повышения производительности. Ненужные секции могут быть отброшены, а запросы на оставшихся станут параллельными. Например, может быть оптимизирована операция select со сравнениями, =, in, between.
Индексы
Индексы могут быть секционированы. TBF