一个表在创建索引,我同时有set tiflash副本,set tiflash副本的语句被阻塞了
同一个表上的DDL是串行的吗?理论上创建索引与set tiflash副本是不相关的事情
我是set tiflash的DDL与create index,不是这个文档说的这3类,这3类阻塞我可以理解,要锁表吗
我理解如果set是属于一个DDL操作,那跟文档中描述的应该没区别吧,就是不知道set tiflash算不算一个DDL
关键是先执行set tiflash的DDL,在创建索引,不阻塞,不好理解
添加索引在 add index queue ,set replica 在 job queue中,理论上来说是不会阻塞,但是如果涉及到同一个操作对象,还是会串行执行。
我没执行过set tiflash,他是General DDL吗?General DDL执行很快的,你再执行add index应该就不阻塞了。你出现阻塞的情况是先执行的add index,再执行的set tiflash吧
看Jobid createtime是先加的索引后设置tiflash副本
你这个加索引操作在前,执行了几小时还没完?
目前tidb 已经支持了online ddl,但一个时间点只能有一个DDL可以执行,无论提交到哪个tidb server。
同一张表的DDL,是要串行的,由队列顺序执行
是的,串行的
主要是加索引太慢了
你先增加tiflash 再加索引 这样不卡住的
串行执行
online ddl,作业会持久化到tikv中,队列执行。
https://docs.pingcap.com/zh/tidb/stable/metadata-lock#元数据锁的概念
可能是元数据导致
下面的介绍
为了解决这个问题,在 TiDB v6.3.0 中,online DDL 算法中引入了元数据锁特性。通过协调表元数据变更过程中 DML 语句和 DDL 语句的优先级,让执行中的 DDL 语句等待持有旧版本元数据的 DML 语句提交,尽可能避免 DML 语句报错。
set tiflash 应该有两个动作,一个全量和一个增量(ps 这块我个人觉得),相当于dml
ddl是要串行的
串行的