分布式事务型关系数据库 AntDB 锁集群

 

github 代码位置:https://github.com/ADBSQL/AntDB

QQ交流群:496464280

 

AntDB是基于postgres-xc架构的分布式数据库,在原有postgres-xc基础上,提供了oracle语法兼容,增强了集群在高并发大压力下的稳定性等多方面的改进。

 

下面主要介绍AntDB提供的锁集群功能。


锁集群

 

AntDB数据库集群包含多个coordinator节点,coordinator节点之间存在相互通信。在锁集群操作时,我们只需要在其中一个coordinator节点上执行锁集群语句即可,

 

锁集群语句为"SELECT PG_PAUSE_CLUSTER()",示例如下:

postgres=# SELECT PG_PAUSE_CLUSTER();
 pg_pause_cluster 
------------------
 t
(1 row)

 

锁集群发生后,除了所集群涉及的当前session可以继续执行sql等语句操作,其它任何连接到coordinaator上的session上都无法执行sql等语句操作,操作hang住,

等待集群锁释放才能继续执行,可以理解为各个coordinator上不再允许有新的连接进来执行应用操作。

 

释放集群锁

需要释放集群锁时,需要在锁集群涉及的session界面执行释放集群锁语句即可,释放集群锁语句为"SELECT PG_UNPAUSE_CLUSTER()",示例如下:
postgres=# SELECT PG_UNPAUSE_CLUSTER();
 pg_unpause_cluster 
--------------------
 t
(1 row)
释放集群锁后,所有的coordinator均可接受连接执行操作,原有的由于锁集群被hang住的语句恢复正常执行。

 

需要说明的是:

1.在集群正常运行状态下才能够锁集群成功,若有coordinator节点异常则锁集群操作失败;

2.执行完锁集群操作后执行"\q"或其它操作导致与coordinator连接断开,会自动触发释放集群锁操作;

 

 

你可能感兴趣的:(数据库)