Последнее обновление
ALTER TABLE PARTITION
Описание
Этот оператор используется для изменения секционированной таблицы.
Операция выполняется синхронно: возврат управления после вызова команды означает, что её выполнение завершено.
Синтаксис:
ALTER TABLE [database.]table alter_clause;
В alter_clause для секций поддерживаются следующие операции:
- Добавление секции
Синтаксис:
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
- Удаление секции
Синтаксис:
DROP PARTITION [IF EXISTS] partition_name [FORCE]
Примечания:
- В таблице с секционированием должна оставаться хотя бы одна секция.
- В течение некоторого времени после выполнения DROP PARTITION удалённую секцию можно восстановить с помощью оператора RECOVER. Подробнее см. раздел «Оператор RECOVER» в главе «Управление базами данных» руководства по SQL.
- При выполнении DROP PARTITION FORCE система не проверяет наличие незавершённых транзакций в секции. Секция удаляется немедленно без возможности восстановления. Как правило, эта операция не рекомендуется.
- Изменение свойств секции
Синтаксис:
MODIFY PARTITION p1|(p1[, p2, ...]) SET ("key" = "value", ...)
Пояснения:
- В настоящее время поддерживается изменение следующих свойств секций:
- storage_medium -storage_cooldown_time
- replication_num
- in_memory
- Для таблиц с единственной секцией partition_name совпадает с именем таблицы.
Примеры
- Добавление секции: при существующей секции [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");
- Добавление секции с новым числом бакетов
ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
DISTRIBUTED BY HASH(k1) BUCKETS 20;
- Добавление секции с новым числом реплик
ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES LESS THAN ("2015-01-01")
("replication_num"="1");
- Изменение числа реплик секции
ALTER TABLE example_db.my_table
MODIFY PARTITION p1 SET("replication_num"="1");
- Пакетное изменение указанных секций
ALTER TABLE example_db.my_table
MODIFY PARTITION (p1, p2, p4) SET("replication_num"="1");
- Пакетное изменение всех секций
ALTER TABLE example_db.my_table
MODIFY PARTITION (*) SET("storage_medium"="HDD");
- Удаление секции
ALTER TABLE example_db.my_table
DROP PARTITION p1;
- Пакетное удаление секций
ALTER TABLE example_db.my_table
DROP PARTITION p1,
DROP PARTITION p2,
DROP PARTITION p3;
- Добавление секции с указанием верхней и нижней границ
ALTER TABLE example_db.my_table
ADD PARTITION p1 VALUES [("2014-01-01"), ("2014-02-01"));
Ключевые слова
ALTER, TABLE, PARTITION, ALTER TABLE