Online DDL语句执行流程中做的?

1.TiDB Server进行解析(Parse)和编译(Compile),生成执行计划
2 将job队列中的DDL语句对应的表全部锁住为只读状态
请教一下大家觉得1/2哪个是ONline DDL必须做的?
我个人觉得应该是1,因为online ddl不阻塞读写。

有老师帮忙看看吗?

参考下DDL执行原理:
https://docs.pingcap.com/zh/tidb/stable/ddl-introduction#ddl-语句的执行原理及最佳实践

1 个赞

2 :x:

参考下DDL执行原理

1应该不是ddl必须做的

学到了

确实是2有问题

2 将job队列中的DDL语句对应的表全部锁住为只读状态
这个明显是错误的,
按照执行期间是否阻塞用户业务,DDL 语句可以划分为:

  • 离线 DDL 语句:即数据库接收到用户的 DDL 语句后,会先对要修改的数据库对象进行加锁,再执行元数据变更,在 DDL 执行过程中将阻塞用户业务对数据的修改。
  • 在线 DDL 语句:即数据库在执行 DDL 语句时,通过一定的方法,使得 DDL 执行不阻塞用户业务,且能够保证用户业务可在 DDL 执行期间提交修改,在执行过程中保证对应对象的数据正确性与一致性。

online ddl 不会阻塞读写,所有应该不会锁表

你还挺认真,这是考试题 :grinning:

是1吧

参考下DDL执行原理吧

2,全部job,肯定不对

我选1

1.TiDB Server进行解析(Parse)和编译(Compile),生成执行计划
2执行时好像是不锁的