Spec-Zone.ru › MySQL 5.7

22.3 Управление разбиением таблиц

  • 22.3.1 Управление разбиением RANGE и LIST
  • 22.3.2 Управление разбиением HASH и KEY
  • 22.3.3 Обмен разделами и подразделами с таблицами
  • 22.3.4 Техническое обслуживание разделов
  • 22.3.5 Получение информации о разделах

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.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/partitioning-management.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API