别名表引擎
实验性功能。 了解更多。
Alias 引擎创建另一个表的代理。所有读取和写入操作都会转发到目标表,而别名本身不存储任何数据,仅维护对目标表的引用。
参考
这是一个实验性功能,未来版本可能会以不兼容的方式更改。使用 allow_experimental_alias_table_engine 设置启用别名表引擎的使用。输入命令 set allow_experimental_alias_table_engine = 1。
创建表
或者使用显式数据库名称
注意
Alias 表不支持显式列定义。列会自动从目标表继承。这确保了别名始终与目标表的模式匹配。
引擎参数
target_db (可选)— 包含目标表的数据库名称。target_table— 目标表的名称。
支持的操作
Alias 表引擎支持所有主要操作。
目标表上的操作
这些操作会代理到目标表
| 操作 | 支持 | 描述 |
|---|---|---|
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 操作
分区操作
对于分区表,分区操作会被转发
表优化
优化操作会在目标表中合并部分
别名管理
别名可以独立重命名或删除