首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >原子引擎上的EXCHANGE语句是否为多个表提供原子功能?

原子引擎上的EXCHANGE语句是否为多个表提供原子功能?
EN

Stack Overflow用户
提问于 2022-05-30 15:19:51
回答 1查看 88关注 0票数 0

用于交换两个表的文档声明原子性,但是多个表怎么办?下面的查询运行良好,并在表A <=> BC <=> D中执行交换

代码语言:javascript
复制
EXCHANGE TABLES "default"."A" AND "default"."B", "default"."C" AND "default"."D"

原子引擎上的EXCHANGE语句是否为多个表提供原子功能?A <=> B交换时可以是情况,但C <=> D不是吗?原子性在整个交换查询上传播吗?

EN

回答 1

Stack Overflow用户

发布于 2022-05-30 23:27:38

它们不是原子的。

代码语言:javascript
复制
insert into a.x1 select 1;
insert into a.x1 select 2;

exchange tables a.x1 and a.x2, a.y1 and a.y2;

Received exception from server (version 22.6.1):
Code: 521. DB::Exception: Received from localhost:9000.DB::ErrnoException: Paths cannot be exchanged because /var/lib/clickhouse/store/209/209474d2-5d64-4ca0-8b45-9abf4109235a/y1.sql or /var/lib/clickhouse/store/209/209474d2-5d64-4ca0-8b45-9abf4109235a/y2.sql does not exist, errno: 2, strerror: No such file or directory. (ATOMIC_RENAME_FAIL)

select * from a.x1;
Ok.
0 rows in set. Elapsed: 0.002 sec.


select * from a.x2
┌─A─┐
│ 2 │
└───┘
┌─A─┐
│ 1 │
└───┘

Atomicy与DML事务无关。这是关于可见性的选择。查询不会看到中间状态,也不会抛出table . does not exists...

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72436607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档