在 ClickHouse 中重命名表时究竟会发生啥?
Posted
技术标签:
【中文标题】在 ClickHouse 中重命名表时究竟会发生啥?【英文标题】:What exactly happens when renaming tables in ClickHouse?在 ClickHouse 中重命名表时究竟会发生什么? 【发布时间】:2020-06-09 11:38:32 【问题描述】:我阅读了https://clickhouse.tech/docs/en/sql-reference/statements/misc/#misc_operations-rename 并知道所有表都在全局锁定下重命名。
我的重命名案例是
rename table t_real_table to t_archive, t_new_data to t_real_table
为了归档旧的t_real_table
并使新生成的表t_new_data
用作t_real_table
。
我有时会在重命名期间发现一些查询 (select * from t_real_table
) 失败 (Table t_real_table doesn't exist
)。重命名似乎不是一个非常短暂的过程。我想知道重命名表时究竟会发生什么,以便找到避免此类失败的方法。
是不是把metadata/t_real_table.sql
改成metadata/t_archive.sql
,把data/default/t_real_table/
的路径名改成data/default/t_archive/
,然后把metadata/t_new_data.sql
改成metadata/t_real_table.sql
,把data/default/t_new_data/
的路径名改成data/default/t_real_table/
?
如果是这样,我认为重命名不会持续这么久。但是如何避免重命名过程中的失败呢? Atomic Engine靠谱吗?
【问题讨论】:
【参考方案1】:https://github.com/ClickHouse/ClickHouse/issues/11555#issuecomment-642011592
文档有误。没有全局锁,它被删除了
6757
【讨论】:
以上是关于在 ClickHouse 中重命名表时究竟会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章
在 EF Core 3 中重命名 IdentityRole 表
当我设置 IIS 池的 LoadUserProfile 时究竟会发生啥?