ESGYNDB CQD-TRAF_LOCK_DDL

2022-03-30 00:00:00 操作 对象 并发 几个 值为

本文介绍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中对表存储两个标签:

  1. DDL_IN_PROGRESS - 当表上有DDL操作时值为1,此时会阻挡表上的其他的DDL及DML操作,操作完成后值为0
  2. READS_DISALLOWED - 当值为1时,读操作也不被允许
    我们可以通过以下语句来查看表的状态,
GET [LOCKED] OBJECT EPOCH STATISTICS [OF <table name>] [FOR (ALL |
CURRENT | <node id>)]
  • 1
  • 2

简化的命令为:

GET OBJECT EPOCH STATISTICS
  • 1

样例输出如下图,

关于以上输出的几个参数的解释如下,

  1. Node Id -表示第几个节点
  2. Object Name -表示哪个对象
  3. Object Type -对象类型
  4. Hash -Hash值
  5. Redifine Time -对象创建或重定义时间,暂未使用
  6. Epoch -对象元信息版本
  7. 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

相关文章