メインコンテンツまでスキップ
バージョン: 26.x

ALTER TABLE PROPERTY

注意

Partition属性とTable属性の違い

  • Partition属性は一般的にbucket数(buckets)、ストレージメディア(storage_medium)、レプリケーション数(replication_num)、およびホット/コールドデータ分離ポリシー(storage_policy)に焦点を当てています。
    • 既存のpartitionに対しては、ALTER TABLE {tableName} MODIFY PARTITION ({partitionName}) SET ({key}={value})を使用して変更できますが、bucket数(buckets)は変更できません。
    • 未作成のdynamic partitionに対しては、ALTER TABLE {tableName} SET (dynamic_partition.{key} = {value})を使用してその属性を変更できます。
    • 未作成のauto partitionに対しては、ALTER TABLE {tableName} SET ({key} = {value})を使用してその属性を変更できます。
    • ユーザーがpartition属性を変更したい場合は、すでに作成されたpartitionの属性と、未作成のpartitionの属性の両方を変更する必要があります。
  • 上記の属性以外は、すべてテーブルレベルの属性です。
  • 具体的な属性については、create table attributesを参照してください

説明

このステートメントは、既存のテーブルのプロパティを変更するために使用されます。この操作は同期的で、コマンドの戻りは実行の完了を示します。

テーブルのプロパティを変更します。現在、bloom filterカラム、colocate_with属性、dynamic_partition属性、replication_numおよびdefault.replication_numの変更をサポートしています。

grammar:

ALTER TABLE [database.]table alter_clause;

property の alter_clause は以下の変更方法をサポートします。

注意:

上記のスキーマ変更操作にマージして変更することも可能です。以下の例を参照してください。

  1. テーブルのブルームフィルター列を変更する
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は、シーケンス列のタイプを指定するために使用され、integral型とtime型が使用可能
  • 新しくインポートされたデータの順序性のみサポート。履歴データは変更不可
  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つのストレージポリシーのみを持つことができます。

  1. テーブルのパーティションにホットデータとコールドデータの移行戦略を追加する
ALTER TABLE create_table_partition MODIFY PARTITION (*) SET("storage_policy"="created_create_table_partition_alter_policy");

注意:テーブルのパーティションは、ストレージポリシーに関連付けられていない場合にのみ正常に追加できます。テーブルは1つのストレージポリシーのみを持つことができます。

Keywords

ALTER, TABLE, PROPERTY, ALTER TABLE

ベストプラクティス