Перейти к содержимому
Последнее обновление

ALTER TABLE PARTITION

Описание​

Этот оператор используется для изменения секционированной таблицы.

Операция выполняется синхронно: возврат управления после вызова команды означает, что её выполнение завершено.

Синтаксис:

ALTER TABLE [database.]table alter_clause;

В alter_clause для секций поддерживаются следующие операции:

  1. Добавление секции

Синтаксис:

ADD PARTITION [IF NOT EXISTS] partition_name
partition_desc ["key"="value"]
[DISTRIBUTED BY HASH (k1[,k2 ...]) [BUCKETS num]]

Примечания:

  • partition_desc поддерживает следующие два варианта записи:
    • VALUES LESS THAN [MAXVALUE|("value1", ...)]
    • VALUES [("value1", ...), ("value1", ...))
  • Диапазон секции включает левую границу и не включает правую. Если пользователь указывает только правую границу, система автоматически определяет левую.
  • Если способ разбиения на бакеты не указан, автоматически используются способ разбиения и число бакетов, заданные при создании таблицы.
  • Если способ разбиения на бакеты указан, можно изменить только число бакетов, но не сам способ разбиения или столбец разбиения. Если способ разбиения указан, а число бакетов не задано, используется значение по умолчанию 10, а не число, указанное при создании таблицы. При изменении числа бакетов необходимо одновременно указать способ разбиения.
  • В части ["key"="value"] можно задать некоторые свойства секции, см. CREATE TABLE.
  • Если при создании таблицы пользователь явно не создал секцию, добавление секции через ALTER не поддерживается.
  • При секционировании по списку пользователь может добавить в таблицу секцию по умолчанию. В ней будут храниться все данные, которые не удовлетворяют ограничениям ключей ранее заданных секций.
    • ALTER TABLE table_name ADD PARTITION partition_name
  1. Удаление секции

Синтаксис:

DROP PARTITION [IF EXISTS] partition_name [FORCE]

Примечания:

  • В таблице с секционированием должна оставаться хотя бы одна секция.
  • В течение некоторого времени после выполнения DROP PARTITION удалённую секцию можно восстановить с помощью оператора RECOVER. Подробнее см. раздел «Оператор RECOVER» в главе «Управление базами данных» руководства по SQL.
  • При выполнении DROP PARTITION FORCE система не проверяет наличие незавершённых транзакций в секции. Секция удаляется немедленно без возможности восстановления. Как правило, эта операция не рекомендуется.
  1. Изменение свойств секции

Синтаксис:

MODIFY PARTITION p1|(p1[, p2, ...]) SET ("key" = "value", ...)

Пояснения:

  • В настоящее время поддерживается изменение следующих свойств секций:
    • storage_medium -storage_cooldown_time
    • replication_num
    • in_memory
  • Для таблиц с единственной секцией partition_name совпадает с именем таблицы.

Примеры​

  1. Добавление секции: при существующей секции [MIN, 2013-01-01) добавляется секция [2013-01-01, 2014-01-01) с использованием способа разбиения на бакеты по умолчанию.
ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES LESS THAN ("2014-01-01");
  1. Добавление секции с новым числом бакетов
ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
DISTRIBUTED BY HASH(k1) BUCKETS 20;
  1. Добавление секции с новым числом реплик
ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
("replication_num"="1");
  1. Изменение числа реплик секции
ALTER TABLE example_db.my_table
MODIFY PARTITION p1 SET("replication_num"="1");
  1. Пакетное изменение указанных секций
ALTER TABLE example_db.my_table
MODIFY PARTITION (p1, p2, p4) SET("replication_num"="1");
  1. Пакетное изменение всех секций
ALTER TABLE example_db.my_table
MODIFY PARTITION (*) SET("storage_medium"="HDD");
  1. Удаление секции
ALTER TABLE example_db.my_table
DROP PARTITION p1;
  1. Пакетное удаление секций
ALTER TABLE example_db.my_table
DROP PARTITION p1,
DROP PARTITION p2,
DROP PARTITION p3;
  1. Добавление секции с указанием верхней и нижней границ
ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES [("2014-01-01"), ("2014-02-01"));

Ключевые слова​

ALTER, TABLE, PARTITION, ALTER TABLE

Рекомендации по применению​