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

ALTER TABLE PROPERTY

предупреждение

Различия между атрибутами партиций и атрибутами таблиц

  • Атрибуты партиций в основном определяют число бакетов (buckets), носитель хранения (storage_medium), число реплик (replication_num) и политики разделения горячих и холодных данных (storage_policy).
    • Для существующих партиций атрибуты можно изменить с помощью ALTER TABLE {tableName} MODIFY PARTITION ({partitionName}) SET ({key}={value}), однако число бакетов (buckets) изменить нельзя.
    • Для динамических партиций, которые ещё не созданы, атрибуты можно изменить с помощью ALTER TABLE {tableName} SET (dynamic_partition.{key} = {value}).
    • Для автоматических партиций, которые ещё не созданы, атрибуты можно изменить с помощью ALTER TABLE {tableName} SET ({key} = {value}).
    • Чтобы изменить атрибуты партиций, необходимо изменить атрибуты как уже созданных, так и ещё не созданных партиций.
  • Все остальные атрибуты, кроме перечисленных выше, относятся к уровню таблицы.
  • Подробнее об атрибутах см. в разделе Атрибуты создания таблицы

Описание​

Эта инструкция используется для изменения свойств существующей таблицы. Операция выполняется синхронно: возврат управления после выполнения команды означает, что операция завершена.

В настоящее время поддерживается изменение столбцов таблицы, для которых используется bloom filter, атрибутов colocate_with и dynamic_partition, а также replication_num и default.replication_num.

Синтаксис:

ALTER TABLE [database.]table alter_clause;

Для изменения свойств в alter_clause поддерживаются следующие варианты.

Примечание:

Изменение свойств также можно включить в приведённую выше операцию изменения схемы; см. пример ниже.

  1. Изменить столбец таблицы, для которого используется bloom filter
ALTER TABLE example_db.my_table SET ("bloom_filter_columns"="k1,k2,k3");

Изменение также можно включить в приведённую выше операцию изменения схемы (обратите внимание: синтаксис для нескольких предложений немного отличается).

ALTER TABLE example_db.my_table
DROP COLUMN col2
PROPERTIES ("bloom_filter_columns"="k1,k2,k3");
  1. Изменить свойство Colocate таблицы
ALTER TABLE example_db.my_table set ("colocate_with" = "t1");
  1. Изменить способ распределения таблицы по бакетам с Hash Distribution на Random Distribution
ALTER TABLE example_db.my_table set ("distribution_type" = "random");
  1. Изменить атрибут динамического партиционирования таблицы (поддерживается добавление атрибутов динамического партиционирования в таблицу, у которой их нет)
ALTER TABLE example_db.my_table set ("dynamic_partition.enable" = "false");

При добавлении атрибутов динамического партиционирования в таблицу, у которой их нет, необходимо указать все атрибуты динамического партиционирования. (Примечание: добавление атрибутов динамического партиционирования не поддерживается для таблиц без партиций.)

ALTER TABLE example_db.my_table set (
"dynamic_partition.enable" = "true",
"dynamic_partition.time_unit" = "DAY",
"dynamic_partition.end" = "3",
"dynamic_partition.prefix" = "p",
"dynamic_partition. buckets" = "32"
);
  1. Изменить атрибут in_memory таблицы; допускается только значение 'false'
ALTER TABLE example_db.my_table set ("in_memory" = "false");
  1. Включить пакетное удаление
ALTER TABLE example_db.my_table ENABLE FEATURE "BATCH_DELETE";

Примечание:

  • Поддерживаются только таблицы с уникальными ключами.
  • Пакетное удаление можно включить для старых таблиц; в новых таблицах оно уже поддерживается с момента создания.
  1. Включить функцию, обеспечивающую порядок загрузки по значениям столбца sequence
ALTER TABLE example_db.my_table ENABLE FEATURE "SEQUENCE_LOAD" WITH PROPERTIES (
"function_column.sequence_type" = "Date"
);

Примечание:

  • Поддерживаются только таблицы с уникальными ключами.
  • sequence_type задаёт тип столбца sequence; поддерживаются целочисленные типы и типы времени.
  • Порядок обеспечивается только для вновь загружаемых данных. Исторические данные изменить нельзя.
  1. Изменить число бакетов таблицы по умолчанию на 50
ALTER TABLE example_db.my_table MODIFY DISTRIBUTION DISTRIBUTED BY HASH(k1) BUCKETS 50;

Примечание:

  • Поддерживаются только партиционированные таблицы, не использующие Colocate. Подробнее см. в разделе ALTER TABLE DISTRIBUTION.
  1. Изменить комментарий таблицы
ALTER TABLE example_db.my_table MODIFY COMMENT "new comment";
  1. Изменить комментарии столбцов
ALTER TABLE example_db.my_table MODIFY COLUMN k1 COMMENT "k1", MODIFY COLUMN k2 COMMENT "k2";
  1. Изменить тип движка

Поддерживается только изменение типа MySQL на ODBC. В качестве значения driver указывается имя драйвера из конфигурации odbc.init.

ALTER TABLE example_db.mysql_table MODIFY ENGINE TO odbc PROPERTIES("driver" = "MySQL");
  1. Изменить число реплик
ALTER TABLE example_db.mysql_table SET ("replication_num" = "2");
ALTER TABLE example_db.mysql_table SET ("default.replication_num" = "2");
ALTER TABLE example_db.mysql_table SET ("replication_allocation" = "tag.location.default: 1");
ALTER TABLE example_db.mysql_table SET ("default.replication_allocation" = "tag.location.default: 1");

Примечание:

  1. Свойство с префиксом default задаёт распределение реплик по умолчанию для изменяемой таблицы. Его изменение не затрагивает текущее фактическое распределение реплик таблицы, а влияет только на распределение реплик вновь создаваемых партиций в партиционированной таблице.
  2. Для таблиц без партиций изменение свойства распределения реплик без префикса default изменяет как распределение реплик по умолчанию, так и фактическое распределение реплик таблицы. То есть после изменения в выводе инструкций show create table и show partitions from tbl можно увидеть, что распределение реплик было изменено.
  3. Для партиционированных таблиц фактическое распределение реплик задаётся на уровне партиций: у каждой партиции своё распределение реплик, которое можно просмотреть с помощью инструкции show partitions from tbl. Чтобы изменить фактическое распределение реплик, см. ALTER TABLE PARTITION.

13. [Экспериментально] включить light_schema_change

Для таблиц, при создании которых light_schema_change не был включён, его можно включить следующей инструкцией.

ALTER TABLE example_db.mysql_table SET ("light_schema_change" = "true");

Пример​

  1. Изменить столбец таблицы, для которого используется bloom filter
ALTER TABLE example_db.my_table SET ("bloom_filter_columns"="k1,k2,k3");

Изменение также можно включить в приведённую выше операцию изменения схемы (обратите внимание: синтаксис для нескольких предложений немного отличается).

ALTER TABLE example_db.my_table
DROP COLUMN col2
PROPERTIES ("bloom_filter_columns"="k1,k2,k3");
  1. Изменить свойство Colocate таблицы
ALTER TABLE example_db.my_table set ("colocate_with" = "t1");
  1. Изменить способ распределения таблицы по бакетам с Hash Distribution на Random Distribution
ALTER TABLE example_db.my_table set ("distribution_type" = "random");
  1. Изменить атрибут динамического партиционирования таблицы (поддерживается добавление атрибутов динамического партиционирования в таблицу, у которой их нет)
ALTER TABLE example_db.my_table set ("dynamic_partition.enable" = "false");

При добавлении атрибутов динамического партиционирования в таблицу, у которой их нет, необходимо указать все атрибуты динамического партиционирования. (Примечание: добавление атрибутов динамического партиционирования не поддерживается для таблиц без партиций.)

ALTER TABLE example_db.my_table set ("dynamic_partition.enable" = "true", "dynamic_partition.time_unit" = "DAY", "dynamic_partition.end" = "3", "dynamic_partition.prefix" = "p", "dynamic_partition. buckets" = "32");
  1. Изменить атрибут in_memory таблицы; допускается только значение 'false'
ALTER TABLE example_db.my_table set ("in_memory" = "false");
  1. Включить пакетное удаление
ALTER TABLE example_db.my_table ENABLE FEATURE "BATCH_DELETE";
  1. Включить функцию, обеспечивающую порядок загрузки по значениям столбца sequence
ALTER TABLE example_db.my_table ENABLE FEATURE "SEQUENCE_LOAD" WITH PROPERTIES ("function_column.sequence_type" = "Date");
  1. Изменить число бакетов таблицы по умолчанию на 50
ALTER TABLE example_db.my_table MODIFY DISTRIBUTION DISTRIBUTED BY HASH(k1) BUCKETS 50;
  1. Изменить комментарий таблицы
ALTER TABLE example_db.my_table MODIFY COMMENT "new comment";
  1. Изменить комментарии столбцов
ALTER TABLE example_db.my_table MODIFY COLUMN k1 COMMENT "k1", MODIFY COLUMN k2 COMMENT "k2";
  1. Изменить тип движка
ALTER TABLE example_db.mysql_table MODIFY ENGINE TO odbc PROPERTIES("driver" = "MySQL");
  1. Добавить для таблицы политику миграции данных с разделением на холодные и горячие
 ALTER TABLE create_table_not_have_policy set ("storage_policy" = "created_create_table_alter_policy");

ПРИМЕЧАНИЕ: Политику можно добавить только для таблицы, с которой ещё не связана политика хранения. Таблица может иметь только одну политику хранения.

  1. Добавить для партиции таблицы политику миграции горячих и холодных данных
ALTER TABLE create_table_partition MODIFY PARTITION (*) SET("storage_policy"="created_create_table_partition_alter_policy");

ПРИМЕЧАНИЕ: Политику можно добавить только для партиции таблицы, с которой ещё не связана политика хранения. Таблица может иметь только одну политику хранения.

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

ALTER, TABLE, PROPERTY, ALTER TABLE

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