Alias 表引擎
Experimental feature. Learn more.
Alias 引擎会创建指向另一张表的代理。所有读写操作都会被转发到目标表,而别名表本身不存储任何数据,只维护对目标表的引用。
参考资料
这是一个实验性特性,在未来版本中可能会以不向后兼容的方式发生变更。
要启用 Alias 表引擎,请通过设置 allow_experimental_alias_table_engine。
输入命令 set allow_experimental_alias_table_engine = 1。
创建表
或者显式地指定数据库名称:
注意
Alias 表不支持显式定义列。列会自动从目标表继承,从而确保该别名表始终与目标表的 schema 保持一致。
引擎参数
target_db(可选)— 包含目标表的数据库名称。target_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 | ✅ | 截断目标表 |
对别名本身的操作
这些操作只会影响别名,不会影响目标表:
| 操作 | 支持情况 | 描述 |
|---|---|---|
DROP TABLE | ✅ | 仅删除别名,目标表保持不变 |
RENAME TABLE | ✅ | 仅重命名别名,目标表保持不变 |
使用示例
创建基本别名
在同一数据库中创建一个简单的别名:
跨数据库别名
创建一个指向不同数据库中某个表的别名:
通过别名执行写入操作
经由别名的所有写入操作都会被转发到其目标表:
表结构修改
ALTER 操作用于修改目标表的表结构:
数据变更
支持 UPDATE 和 DELETE 操作:
分区操作
对于分区表,分区操作将被转发:
表优化
对目标表中的分片执行合并优化操作:
别名管理
可以分别对别名进行重命名或删除: