AntDB基于PGXC开发,保留了原PGXC的重分布逻辑,本文记录了常见的重分布流程。
集群环境
coordinator节点:cd1、cd2
datanode节点:dn1、dn2、dn3
案例1
概述
|
重分布前 |
|
|
|
重分布后 |
|
|
|
重分布CASE |
重分布SQL |
分片方式 |
分片函数 |
分片字段 |
分片节点 |
分片方式 |
分片函数 |
分片字段 |
1、复制表重分布成复制表。2、节点减少。 |
alter table t to node(dn1, dn3); |
R |
× |
× |
dn1、dn2、dn3 |
R |
× |
× |
重分布流程
cd1 -> cd2 : SELECT pg_catalog.pg_try_advisory_xact_lock_shared(65535, 65535)
cd1 -> dn2 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> dn2 : TRUNCATE public.t
cd1 -> cd2 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> cd2 : alter table t to node(dn1, dn3);
cd1 -> dn2 : PREPARE TRANSACTION 'T1906'
cd1 -> cd2 : PREPARE TRANSACTION 'T1906'
cd1 -> dn2 : COMMIT PREPARED 'T1906'
cd1 -> cd2 : COMMIT PREPARED 'T1906'
案例2
概述
|
重分布前 |
|
|
|
重分布后 |
|
|
|
重分布CASE |
重分布SQL |
分片方式 |
分片函数 |
分片字段 |
分片节点 |
分片方式 |
分片函数 |
分片字段 |
1、复制表重分布成复制表。2、节点变化。 |
alter table t to node(dn1, dn2); |
R |
× |
× |
dn1、dn3 |
R |
× |
× |
重分布流程
cd1 -> cd2 : SELECT pg_catalog.pg_try_advisory_xact_lock_shared(65535, 65535)
cd1 -> dn1 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> dn1 : COPY public.t TO STDOUT
cd1 -> dn3 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> dn3 : TRUNCATE public.t
cd1 -> dn2 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> dn2 : COPY public.t FROM STDIN
cd1 -> cd2 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> cd2 : alter table t to node(dn1, dn2);
cd1 -> dn1 : PREPARE TRANSACTION 'T1907'
cd1 -> dn3 : PREPARE TRANSACTION 'T1907'
cd1 -> dn2 : PREPARE TRANSACTION 'T1907'
cd1 -> cd2 : PREPARE TRANSACTION 'T1907'
cd1 -> dn1 : COMMIT PREPARED 'T1907'
cd1 -> dn3 : COMMIT PREPARED 'T1907'
cd1 -> dn2 : COMMIT PREPARED 'T1907'
cd1 -> cd2 : COMMIT PREPARED 'T1907'
案例3
概述
|
重分布前 |
|
|
|
重分布后 |
|
|
|
重分布CASE |
重分布SQL |
分片方式 |
分片函数 |
分片字段 |
分片节点 |
分片方式 |
分片函数 |
分片字段 |
1、复制表重分布成复制表。2、节点数增加。 |
alter table t to node(dn1, dn2, dn3); |
R |
× |
× |
dn1、dn2 |
R |
× |
× |
重分布流程
cd1 -> cd2 : SELECT pg_catalog.pg_try_advisory_xact_lock_shared(65535, 65535)
cd1 -> dn1 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> dn1 : COPY public.t TO STDOUT
cd1 -> dn3 : START TRANSACTION ISOLATION LEVEL read committed READ WRITE
cd1 -> dn3 : COPY public.t FROM STDIN
cd1 -> cd2 : START TRANSACTION ISOLATION LEVEL read