Alias テーブルエンジン
Alias エンジンは、別のテーブルへのプロキシを作成します。すべての読み取りおよび書き込み操作は対象テーブルに転送され、エイリアス自体はデータを保持せず、対象テーブルへの参照のみを保持します。
これは実験的な機能であり、将来のリリースで後方互換性を損なう形で変更される可能性があります。
Alias テーブルエンジンを使用するには、
allow_experimental_alias_table_engine 設定を有効にしてください。
次のコマンドを実行します: set allow_experimental_alias_table_engine = 1。
テーブルの作成
または、データベース名を明示的に指定する場合:
Alias テーブルでは、明示的な列定義を行うことはできません。列はターゲットテーブルから自動的に継承されます。これにより、エイリアスは常にターゲットテーブルのスキーマと一致します。
エンジンパラメータ
target_db (optional)— 対象テーブルを含むデータベースの名前 (省略可能) 。target_table— 対象テーブルの名前。
target_db が省略され、かつ target_table が完全修飾されていない場合 (例: Alias('my_table')) 、対象はセッションのカレントデータベースではなく、エイリアス自体と同じデータベースとして解決されます。
サポートされている操作
Alias テーブルエンジンは、主要な操作をすべてサポートします。
ターゲットテーブルに対する操作
これらの操作はターゲットテーブルに対してプロキシ経由で実行されます:
| Operation | Support | Description |
|---|---|---|
SELECT | ✅ | ターゲットテーブルからデータを読み取る |
INSERT | ✅ | ターゲットテーブルにデータを書き込む |
INSERT SELECT | ✅ | ターゲットテーブルへのバッチ挿入を行う |
ALTER TABLE ADD COLUMN | ✅ | ターゲットテーブルに列を追加する |
ALTER TABLE MODIFY SETTING | ✅ | ターゲットテーブルの設定を変更する |
ALTER TABLE PARTITION | ✅ | ターゲットに対するパーティション操作 (DETACH/ATTACH/DROP) を行う |
ALTER TABLE UPDATE | ✅ | ターゲットテーブルの行を更新する (mutation) |
ALTER TABLE DELETE | ✅ | ターゲットテーブルから行を削除する (mutation) |
OPTIMIZE TABLE | ✅ | ターゲットテーブルを最適化する (パートをマージ) |
TRUNCATE TABLE | ✅ | ターゲットテーブルを空にする |
エイリアス自体への操作
これらの操作はエイリアスのみに作用し、ターゲットテーブルには影響しません。
| Operation | Support | Description |
|---|---|---|
DROP TABLE | ✅ | エイリアスのみを削除し、ターゲットテーブルには変更が加わらない |
RENAME TABLE | ✅ | エイリアスの名前だけを変更し、ターゲットテーブルには変更が加わらない |
使用例
基本的なエイリアスの作成
同一データベース内で簡単なエイリアスを作成します。
データベース間エイリアス
別のデータベース内のテーブルを参照するエイリアスを作成します。
エイリアス経由での書き込み操作
すべての書き込みはターゲットテーブルに転送されます。
スキーマの変更
ALTER 操作は対象テーブルのスキーマを変更します。
データの変更
UPDATE 文および DELETE 文がサポートされています。
パーティション操作
パーティション化されたテーブルでは、パーティション操作はそのまま伝播されます。
テーブル最適化
ターゲットテーブル内のパーツをマージする処理を最適化します。
エイリアスの管理
エイリアスはそれぞれ独立して名前を変更したり削除したりできます。