描述
包含每个已分离表的相关信息。
列
database(String) — 该表所在的数据库名称。table(String) — 表名。uuid(UUID) — 表的 uuid (Atomic 数据库) 。metadata_path(String) — 文件系统中该表元数据的路径。is_permanently(UInt8) — 该表已被永久分离。
注意事项
对于 DatabaseMySQL 和 DatabasePostgreSQL,这些数据库并不拥有底层数据——数据存储在远程 MySQL/PostgreSQL 服务器上。因此,对使用这些数据库引擎的表执行 DROP TABLE 时,内部实际调用的是 detachTablePermanently:它只会移除 ClickHouse 对该表的本地记录,该表会显示在 system.detached_tables 中,且 is_permanently = 1,与显式执行 DETACH TABLE PERMANENTLY 的效果相同。远程数据本身不会受到影响。对于持久化的 MySQL/PostgreSQL 数据库,分离状态会在服务器重启和重新连接后保留:DatabaseMySQL 会在元数据目录中存储 .remove_flag 标记,而 DatabasePostgreSQL 会存储 .removed 标记。两者都会在启动时由 loadStoredObjects 重新加载。只有在不使用旧元数据目录创建新的外部数据库映射时,该表才会重新出现——例如,删除元数据后,或使用不同名称创建数据库时。
示例
SELECT * FROM system.detached_tables FORMAT Vertical;Row 1:
──────
database: base
table: t1
uuid: 81b1c20a-b7c6-4116-a2ce-7583fb6b6736
metadata_path: /var/lib/clickhouse/store/461/461cf698-fd0b-406d-8c01-5d8fd5748a91/t1.sql
is_permanently: 1