22.3 Управление разбиением таблиц
MySQL 5.7 предоставляет несколько способов модифицировать таблицы с разбиением. Можно добавлять, удалять, переопределять, объединять или разделять существующие разделы. Все эти действия можно выполнить, используя расширения разбиения для оператора ALTER
TABLE. Также существуют способы получения информации о таблицах и разделах с разбиением. Эти темы обсуждаются в последующих разделах.
Сведения об управлении разделами в таблицах, разбённых по
RANGEилиLIST, см. в Разделе 22.3.1, «Управление разбиением RANGE и LIST».Обсуждение управления разделами
HASHиKEYсм. в Разделе 22.3.2, «Управление разбиением HASH и KEY».См. Раздел 22.3.5, «Получение информации о разделах», для обсуждения механизмов, предоставляемых в MySQL 5.7 для получения информации о разбиении таблиц.
Обсуждение выполнения операций технического обслуживания над разделами см. в Разделе 22.3.4, «Техническое обслуживание разделов».
В MySQL 5.7 все разделы одной таблицы с разбиением должны иметь одинаковое количество подразделов, и изменить подразделение после создания таблицы нельзя.
Для изменения схемы разбиения таблицы необходимо только использовать оператор ALTER
TABLE с клаузой partition_options. Эта клауза имеет тот же синтаксис, что и при создании таблицы с разбиением с помощью CREATE TABLE, и всегда начинается со слов PARTITION BY. Предположим, что у вас есть таблица, разбённая по диапазону, используя следующий оператор CREATE TABLE:
CREATE TABLE trb3 (id INT, name VARCHAR(50), purchased DATE)
PARTITION BY RANGE( YEAR(purchased) ) (
PARTITION p0 VALUES LESS THAN (1990),
PARTITION p1 VALUES LESS THAN (1995),
PARTITION p2 VALUES LESS THAN (2000),
PARTITION p3 VALUES LESS THAN (2005)
);
Для повторного разбиения этой таблицы, чтобы она была разбённой по ключу на два раздела, используя значение столбца id в качестве основы для ключа, можно использовать этот оператор:
ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;
Это оказывает такое же влияние на структуру таблицы, как удаление таблицы и её повторное создание с помощью CREATE TABLE trb3
PARTITION BY KEY(id) PARTITIONS 2;.
ALTER TABLE ... ENGINE = ... изменяет только движок хранения, используемый таблицей, и оставляет схему разбиения таблицы неизменной. Используйте ALTER TABLE ... REMOVE
PARTITIONING, чтобы удалить разбиение таблицы. См. Раздел 13.1.8, «Оператор ALTER TABLE».
В операторе ALTER
TABLE может быть использована только одна клауза PARTITION BY, ADD
PARTITION, DROP PARTITION, REORGANIZE PARTITION или COALESCE
PARTITION. Если, например, вы хотите удалить раздел и перегруппировать оставшиеся разделы таблицы, вы должны сделать это в двух отдельных операторах ALTER
TABLE (один с использованием DROP
PARTITION, а затем второй с использованием REORGANIZE PARTITION).
В MySQL 5.7 можно удалить все строки из одного или нескольких выбранных разделов, используя ALTER TABLE ...
TRUNCATE PARTITION.
© 2025 Oracle
Licensed under the GPLv2 License.