ESGYNDB CQD-TRAF_LOCK_DDL
本文介绍EsgynDB的CQD之traf_lock_ddl,此CQD是为了控制并发的DDL/DML操作的用途,默认情况下在EsgynDB中的DDL和DML操作不会相互阻塞,这可能会导致DDL和MDL同时进行时的一些怪异现象。打个比方,如果在一个正在不停写入数据的表上创建索引,那么可能会造成表和索引的数据不一致。
鉴于此问题,EsgynDB新的版本引入了并发DDL/DML功能,此功能通过cqd traf_lock_ddl来控制,默认情况下cqd的值为OFF,如果要打开并发DDL/DML功能,则需要设置cqd traf_lock_ddl ‘ON’。
该功能的设计原理是在RMS中对表存储两个标签:
- DDL_IN_PROGRESS - 当表上有DDL操作时值为1,此时会阻挡表上的其他的DDL及DML操作,操作完成后值为0
- READS_DISALLOWED - 当值为1时,读操作也不被允许
我们可以通过以下语句来查看表的状态,
- 1
- 2
简化的命令为:
- 1
样例输出如下图,
关于以上输出的几个参数的解释如下,
- Node Id -表示第几个节点
- Object Name -表示哪个对象
- Object Type -对象类型
- Hash -Hash值
- Redifine Time -对象创建或重定义时间,暂未使用
- Epoch -对象元信息版本
- Flags - 0代表不显示DDL_IN_PROGRESS和READS_DISALLOWED,1代表DDL_IN_PROGRESS=1且READS_DISALLOWED=0,3代表DDL_IN_PROGRESS=1且READS_DISALLOWED=1
本文链接:https://blog.csdn.net/Post_Yuan/article/details/105197513
相关文章