すべてのプロダクト
Search
ドキュメントセンター

Lindorm:ALTER TABLE

最終更新日:Dec 25, 2025

`ALTER TABLE` 文は、テーブルのスキーマを変更します。たとえば、この文を使用して、列の追加や削除、テーブル属性の設定ができます。このトピックでは、`LindormTable` と `LindormTSDB` で `ALTER TABLE` 文を使用する方法について説明します。

エンジンとバージョン

`ALTER TABLE` 構文は、すべてのバージョンの `LindormTable` と `LindormTSDB` で使用できます。

注意事項

`ALTER TABLE` 操作はテーブルをロックしません。データ定義言語 (DDL) 操作中も、テーブルは読み取り可能かつ書き込み可能です。ただし、以下の理由により、タイムアウトエラー、軽微なジッター、またはグリッチが発生する場合があります:

  • DDL 操作中、各シャードはメタデータを再読み込みするためにシャットダウンされ、その後再度開かれます。このプロセスは短く、通常は 10 ms から数百ミリ秒続きます。シャードが再度開かれている間にリクエストが送信されると、そのリクエストで軽微なジッターやグリッチが発生する可能性があります。DDL 操作はオフピーク時間に実行することを推奨します。

  • DDL 操作は、すべてのシャードが変更された後にのみ結果を返します。大きなテーブルで DDL 操作を実行する場合、クライアントのタイムアウト期間が短すぎるとタイムアウトエラーが発生することがあります。ただし、DDL 操作は完了するまでサーバー上で実行され続けます。

構文

alter_table_statement   ::= ALTER TABLE table_name alter_table_instruction

alter_table_instruction ::=   
  add_column_list
  | DROP COLUMN [ IF EXISTS ] column_name
  | SET table_options
  | COMPACT (idcName)?
   
add_column_list ::= ADD [COLUMN] column_def ( ',' ADD [COLUMN] column_def )*
column_def ::= column_name type [TAG]

相違点

次の表は、`LindormTable` と `LindormTSDB` における `ALTER TABLE` 構文の主な相違点を比較したものです。

構文要素

LindormTable

LindormTSDB

ADD COLUMN

COMPACT

説明

`LindormTable` 2.3.4 以降でサポートされています。

✖️

DROP COLUMN

説明

`LindormTable` 2.6.6 以降でサポートされています。

✖️

SET table_options

✖️

使用方法

ADD COLUMN (列の追加)

`LindormTable` と `LindormTSDB` はどちらも `ADD COLUMN` 文をサポートしています。

列を追加する際は、次のルールに注意してください:

  • 新しい列はプライマリキーにできません。

  • `LindormTSDB` の場合、追加できるのはタグ列 (TAG) とフィールド列 (FIELD) のみです。タイムスタンプ列は追加できません。

DROP COLUMN (列の削除)

`DROP COLUMN` は `LindormTable` 2.6.6 以降でのみサポートされています。

説明

コンソールでインスタンスを `LindormTable` 2.6.6 以降にアップグレードできない場合は、`Lindorm` のテクニカルサポート (DingTalk ID: s0s3eg3) にご連絡ください。

DROP COLUMN 操作は非同期です。 ALTER TABLE 文が正常に実行されると、システムはすぐに対象の列を削除します。 ただし、列内のデータは、システムが COMPACT 操作を完了した後にクリアされます。 データのクリーンアップ処理を高速化するには、手動で FLUSH 操作と COMPACT 操作を実行できます。 データがクリアされるまで、同じ名前の列を追加することはできません。 詳細については、「よくある質問」をご参照ください。

SET table_options (テーブル属性の設定)

`SET table_options` は `LindormTable` のみでサポートされています。

テーブル属性のリストについては、「テーブル属性」をご参照ください。SHOW TABLE VARIABLES 文を実行して、テーブル属性が設定されていることを確認できます。詳細については、「SHOW TABLE VARIABLES」をご参照ください。

重要

`MUTABILITY` および `CONSISTENCY` 属性を変更する際は、次の点にご注意ください:

  • インデックスを作成する前は、`MUTABILITY` と `CONSISTENCY` の両方を変更できます。

  • インデックスを作成した後:

    • `MUTABILITY` は変更できません。

    • CONSISTENCY の値は eventual から strong にのみ変更できます。strong から eventual には変更できません。

例については、「動的カラムの有効化」をご参照ください。

COMPACT (メジャーコンパクションの強制実行)

メジャーコンパクションは `LindormTable` 2.3.4 以降でのみサポートされています。

メジャーコンパクション操作は、データファイルをマージし、削除済みまたは期限切れのデータをクリアし、ディスク領域を解放し、読み取り/書き込みパフォーマンスを向上させます。ただし、この操作はシステムリソースを消費します。

  • `idcName` を指定しない場合:

    • シングルゾーンインスタンスには IDC が 1 つしかないため、`idcName` を指定しても効果はありません。

    • マルチゾーンインスタンスには 2 つの IDC があります。`idcName` を指定しない場合、メジャーコンパクション操作は次のルールに基づいて実行されます:

      • `LindormTable` のバージョンが 2.6.4.2 より前の場合、メジャーコンパクションは `idc1` でのみ実行されます。

      • `LindormTable` のバージョンが 2.6.4.2 以降の場合、メジャーコンパクションはデフォルトですべての IDC で実行されます。

  • `idcName` を指定した場合、メジャーコンパクションは指定された IDC で実行されます。複数の IDC を指定できます。コンマ (,) で区切ります。

例については、「メジャーコンパクションの実行」をご参照ください。

このトピックの例は、`CREATE TABLE` トピックの文を使用して作成されたサンプルテーブルに基づいています。

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time BIGINT NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
);

列の追加

sensor テーブルに n1 という名前の列を追加します。

ALTER TABLE sensor ADD COLUMN n1 DOUBLE;

時空間データテーブル roads に時空間列を追加します。

  • 単一の時空間列を追加します。

    ALTER TABLE roads ADD COLUMN g2 GEOMETRY(LINESTRING);
  • 複数の時空間列を追加します。

    ALTER TABLE roads ADD COLUMN g2 GEOMETRY(LINESTRING), g3 GEOMETRY(POLYGON);

列の削除

sensor テーブルから n1 列を削除します。

ALTER TABLE sensor DROP COLUMN IF EXISTS n1;

結果の確認

次の文を実行して結果を確認します。

DESCRIBE table sensor;

動的カラムの有効化

sensor テーブルの動的カラムを有効にします。

ALTER TABLE sensor SET DYNAMIC_COLUMNS = 'true';
説明

動的カラムの詳細については、「動的カラム」をご参照ください。

テーブル整合性の設定

roads 時空間データテーブルの一貫性を設定します。

ALTER TABLE roads SET 'CONSISTENCY' = 'strong';

データ TTL の設定

  • sensor テーブルにデータ TTL を設定します。単位は秒 (s) です。

    ALTER TABLE sensor SET TTL = '2592000';
  • sensor テーブルのデータ TTL を解除します。

    ALTER TABLE sensor SET TTL = '';

    結果の確認

    クラスター管理システムの [概要] ページで、対象のデータベース名をクリックし、次に対象のテーブルをクリックします。 [現在のテーブル詳細] エリアで、ttl パラメーターの値を確認します。 クラスター管理システムへのログイン方法については、「クラスター管理システムにログインする」をご参照ください。

圧縮アルゴリズムの設定

  • sensor テーブルの圧縮アルゴリズムを ZSTD に設定します。

    ALTER TABLE sensor SET COMPRESSION = 'ZSTD';
  • sensor テーブルの圧縮アルゴリズムを NONE に設定します。

    ALTER TABLE sensor SET COMPRESSION = 'NONE';

    結果の確認

    クラスター管理システムの [概要] ページで、対象のデータベース名、次に対象のテーブルの順にクリックし、[現在のテーブル詳細] エリアで [テーブルプロパティの表示] をクリックして COMPRESSION パラメーターの値を確認します。

コールド・ホットデータ分離の設定

説明

コールド・ホットデータ分離の詳細については、「コールド・ホットデータ分離の概要」をご参照ください。

コールドデータとホットデータの境界の設定

タイムスタンプに基づくコールド・ホットデータ分離

sensor テーブルのホットデータとコールドデータの境界を設定します。LindormTable は、データがデータベースに書き込まれたときのタイムスタンプ (インジェスト時間) に基づいて、データをストレージ最適化されたクラウドストレージにアーカイブします。

-- sensor テーブルでタイムスタンプに基づくコールド・ホットデータ分離を有効にし、境界を 1 日に設定します。
ALTER TABLE sensor SET CHS = '86400', CHS_L2 = 'storagetype=COLD';

結果の検証

SHOW TABLE VARIABLES FROM sensor LIKE 'CHS%'; 文を実行すると、CHSCHS_L2 パラメーターの値を表示できます。SHOW VARIABLES 文の詳細については、「SHOW VARIABLES」をご参照ください。

カスタム時間列に基づくコールド・ホットデータ分離

重要

カスタム時間列に基づくコールド・ホットデータ分離には、特定の制限と要件があります。この機能を使用する前に、関連する注意事項を確認してください。詳細については、「注意事項」をご参照ください。

カスタム時間列 time を設定して、sensor テーブルのホットデータとコールドデータの境界を定義します。 LindormTable は、time 列のビジネスタイムスタンプに基づいて、データの行をストレージ最適化クラウドストレージにアーカイブするかどうかを判断します。

-- カスタム列に基づいて sensor テーブルのコールド・ホットデータ分離を有効にします。境界を 1 日に設定し、分離には time 列を使用します。
ALTER TABLE sensor SET CHS ='86400', CHS_L2 = 'storagetype=COLD', CHS_COLUMN = 'COLUMN=time';

結果の確認

SHOW TABLE VARIABLES FROM sensor LIKE 'CHS%'; 文を実行すると、CHSCHS_L2、および CHS_COLUMN パラメーターの値を表示できます。SHOW VARIABLES 文の詳細については、「SHOW VARIABLES」をご参照ください。

コールドデータとホットデータの境界のキャンセル

`sensor` テーブルのコールドデータとホットデータの境界をキャンセルします。

ALTER TABLE sensor SET CHS = '', CHS_L2 = '';

結果の確認

SHOW TABLE VARIABLES FROM sensor LIKE 'CHS%'; 文を実行して、CHS および CHS_L2 パラメーターの値を確認できます。SHOW VARIABLES 文の詳細については、「SHOW VARIABLES」をご参照ください。

メジャーコンパクションの実行

  • `sensor` テーブルでメジャーコンパクションを実行します。

    ALTER TABLE sensor COMPACT;
    説明

    インスタンスがマルチゾーンインスタンスの場合は、次のルールに注意してください:

    • `LindormTable` のバージョンが 2.6.4.2 より前で、IDC を指定しない場合、システムはデフォルトで `idc1` でメジャーコンパクションを実行します。

    • `LindormTable` のバージョンが 2.6.4.2 以降の場合、システムはデフォルトですべての IDC でメジャーコンパクションを実行します。

  • `idc2` でメジャーコンパクションを実行します。

    ALTER TABLE sensor COMPACT 'idc2';
  • `idc1` と `idc2` でメジャーコンパクションを実行します。

    ALTER TABLE sensor COMPACT 'idc1,idc2';