判断题
执行ALTER TABLE SPLIT PARTITION分区分裂属于在线DDL,不会阻塞业务读写。
2 个赞
判断结果:错误
详细解析:
在 OceanBase 中,执行 ALTER TABLE SPLIT PARTITION (分区分裂)操作会阻塞业务写操作 ,因此该说法错误。具体原因如下:
-
DDL 类型归属 :根据 OceanBase 的 DDL 分类机制,
SPLIT PARTITION(分区分裂)属于 Offline DDL 操作。 - 锁表与阻塞机制 :Offline DDL 采用的是“两表双写”方案。在执行过程中,系统需要新建一张对用户不可见的临时隐藏表,并等待所有相关事务结束以获取一个快照点。在这个数据补全和切换的过程中,会阻塞业务的写操作(DML) (读操作通常不受影响)。
- 与自动分区分裂的区别 :需要注意的是,不要将其与 OceanBase 的“自动分区分裂”功能混淆。自动分区分裂(Auto Range Partition Split)确实是在线操作(Online),不阻塞普通 DML 和查询;但用户手动通过 DDL 语句触发的分区分裂,属于 Offline DDL,会对写入产生阻塞影响。
错误
ALTER TABLE … SPLIT PARTITION(分区分裂)是否属于 Online DDL 以及是否会阻塞业务读写,取决于分裂的是“自动分区”还是“手动分区”:
1. 自动分区分裂(Automatic Partition Split)
- 属于 Online DDL。
- 不会阻塞业务读写。
- 在分裂过程中,源分区和目的分区的 Schema 共存,DML 操作(如 INSERT、SELECT)会被透明地转发或转换,保证业务连续性。
- 如果使用
ALTER TABLE ... PARTITION BY ...修改自动分区属性时未定义具体的分区规则,系统会采用 Online DDL 方式执行,不影响原有分区定义。
2. 手动分区分裂(Manual Partition Split)
- 不属于 Online DDL,即属于 Offline DDL。
- 会阻塞业务读写。
- 手动分裂需要重整数据,执行时会采用“两表双写”逻辑(老表和新表同时写入),导致:
- 表空间占用放大(约2倍);
- DML 操作需加表级锁,与 DDL 冲突;
- DDL 必须等待当前事务结束后才能执行,期间可能造成业务 hang 住。