Обзор разбиения
В MariaDB таблица может быть разделена на меньшие подмножества. Разделению подвергаются как данные, так и индексы.
Применение разбиения
Для использования этой функции могут быть разные причины:
- Очень большие таблицы и индексы могут быть медленными даже при оптимизированных запросах. Но если целевая таблица разделена, запросы, которые считывают небольшое количество разделов, могут быть намного быстрее.
- Разбиение позволяет распределить файлы по нескольким устройствам хранения. Например, исторические данные можно разместить на более медленных, но больших дисках (исторические данные не предполагается часто читать); текущие данные — на более быстрых дисках или SSD-устройствах.
- В случае разделения исторических данных от недавних данных, скорее всего, потребуется выполнять регулярные резервные копии одного раздела, а не всей таблицы.
Разбиение для определённых движков хранения
Некоторые движки хранения MariaDB позволяют использовать разбиение более интересным образом.
SPIDER позволяет:
- Перемещать разделы одной таблицы на разные сервера. Таким образом, рабочая нагрузка может быть распределена по большему количеству физических или виртуальных машин (фрагментация данных).
- Все разделы таблицы SPIDER также могут находиться на одной машине. В этом случае будет небольшой накладные расходы (SPIDER будет использовать соединения к localhost), но запросы, которые считывают несколько разделов, будут использовать параллельные потоки.
CONNECT позволяет:
- Создать таблицу, разделы которой являются таблицами, использующими разные движки хранения (например, InnoDB, MyISAM или даже движки, которые не поддерживают разбиение).
- Создать индексируемую и записываемую таблицу на нескольких файлах данных. Эти файлы могут быть в разных форматах.
См. также: Использование CONNECT - Разбиение и фрагментация
Типы разбиения
При разбиении таблицы пользователь должен определить:
- тип разбиения;
- выражение разбиения.
Тип разбиения — это метод, используемый MariaDB для определения того, как строки распределяются по существующим разделам. Выбор правильного типа разбиения важен для эффективного распределения строк по разделам.
Для некоторых типов разбиения также требуется выражение разбиения. Функция разбиения — это выражение SQL, возвращающее целочисленное или временное значение, используемое для определения, в какой раздел попадет данная строка. Выражение разбиения используется для всех чтений и записей, связанных с разбиение таблицы, поэтому оно должно быть быстрым.
См. Типы разбиения для подробного описания.
Как использовать разбиение
По умолчанию MariaDB разрешает разбиение. Это можно определить, используя оператор SHOW PLUGINS, например:
SHOW PLUGINS; ... | Aria | ACTIVE | STORAGE ENGINE | NULL | GPL | | FEEDBACK | DISABLED | INFORMATION SCHEMA | NULL | GPL | | partition | ACTIVE | STORAGE ENGINE | NULL | GPL | +-------------------------------+----------+--------------------+---------+---------+
Если разбиение указано как ВЫКЛЮЧЕНО:
| partition | DISABLED | STORAGE ENGINE | NULL | GPL | +-------------------------------+----------+--------------------+---------+---------+
MariaDB либо была скомпилирована без поддержки разбиения, либо была запущена с опцией --skip-partition или одной из её вариаций:
--skip-partition --disable-partition --partition=OFF
и вы не сможете создать разделы.
Возможно создать новую таблицу с разбиением, используя CREATE TABLE.
ALTER TABLE позволяет:
- Разбить существующую таблицу;
- Удалить разделы из разнесённой таблицы (с всеми данными в разделе);
- Добавить/удалить разделы или переупорядочить их, если это позволяет функция разбиения (см. ниже);
- Поменять раздел с таблицей;
- Выполнить административные операции над некоторыми или всеми разделами (анализ, оптимизация, проверка, восстановление).
Таблица INFORMATION_SCHEMA.PARTITIONS содержит информацию об существующих разделах.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/partitioning-overview/