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

Lindorm:ALTER TABLE

最終更新日:Jul 11, 2026

ALTER TABLE 文は、列の追加や削除、テーブル属性の設定など、テーブルスキーマを変更します。サポートされている句は、LindormTable と LindormTSDB で異なります。

エンジンとバージョン

ALTER TABLE 文は LindormTable と LindormTSDB で使用できます。バージョンによる制限はありません。

注意事項

ALTER TABLE 操作は非ロック操作です。この操作中もテーブルは読み書き可能なままです。ただし、以下の理由により、タイムアウトエラーや一時的なパフォーマンスの変動が発生する可能性があります。

  • DDL 操作中、メタデータを再読み込みするために各シャードが短時間閉じられ、再度開かれます。この処理には通常 10 ミリ秒から数百ミリ秒かかります。リクエストが再オープン中のシャードを対象とした場合、わずかな遅延や一時的なパフォーマンスの変動が発生する可能性があります。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]

エンジンによる相違点

ALTER TABLE 文の動作は LindormTable と LindormTSDB で異なります。サポートされている句の比較を次の表に示します。

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 の場合、タグ列またはフィールド列のみを追加できます。タイムスタンプ列を追加することはできません。

DROP COLUMN

DROP COLUMN 句は LindormTable 2.6.6 以降でのみ利用可能です。

説明

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

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

SET table_options

LindormTable のみが SET table_options 句をサポートしています。

テーブル属性の一覧については、「テーブル属性」をご参照ください。SHOW TABLE VARIABLES 文を使用して、テーブル属性が正常に設定されたことを確認できます。詳細については、「SHOW TABLE VARIABLES」をご参照ください。

重要

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

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

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

    • MUTABILITY は変更できません。

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

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

COMPACT

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」のトピックで次の文を使用して作成された sensor テーブルを使用します。

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 に時空間列を追加します。

  • 空間列を 1 つ追加します。

    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 = '';

    結果の確認

    クラスター管理システムで、Overview ページに移動します。対象データベース配下にある対象のテーブル名をクリックします。[現在のテーブル詳細] セクションで、[TTL] パラメーターの値を確認します。クラスター管理システムへのアクセス方法については、「クラスター管理システムへのログオン」をご参照ください。

圧縮アルゴリズムの設定

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

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

    ALTER TABLE sensor SET COMPRESSION = 'NONE';

    結果の確認

    クラスター管理システムで、Overview ページに移動し、対象データベース配下にある対象のテーブル名をクリックします。[現在のテーブル詳細] セクションで、[テーブルプロパティの表示] をクリックして [COMPRESSION] パラメーターの値を確認します。

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

説明

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

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

取り込みタイムスタンプ

sensor テーブルのホット/コールドデータの境界を設定します。LindormTable は、各行の取り込みタイムスタンプに基づいて、データをキャパシティストレージにアーカイブするかどうかを決定します。

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

結果の確認

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

カスタム時間列

重要

カスタム時間列に基づくデータ分離には制限があります。この機能を使用する前に、「注意事項」をご確認ください。

カスタム時間列 timesensor テーブルのホット/コールドデータの境界として設定します。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」をご参照ください。

ホット/コールドデータの境界の削除

センサーテーブルのホットデータとコールドデータの境界を削除します。

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

結果の確認

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

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

  • センサーテーブルのメジャーコンパクションを実行します。

    ALTER TABLE sensor COMPACT;
    説明

    マルチゾーンインスタンスの場合、次のルールにご注意ください。

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

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

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

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

    ALTER TABLE sensor COMPACT 'idc1,idc2';