判断题 执行ALTER TABLE SPLIT PARTITION分区分裂属于在线DDL,不会阻塞业务读写。

判断题
执行ALTER TABLE SPLIT PARTITION分区分裂属于在线DDL,不会阻塞业务读写。

2 个赞

判断结果:错误

详细解析:

在 OceanBase 中,执行 ALTER TABLE SPLIT PARTITION (分区分裂)操作会阻塞业务写操作 ,因此该说法错误。具体原因如下:

  1. DDL 类型归属 :根据 OceanBase 的 DDL 分类机制,SPLIT PARTITION (分区分裂)属于 Offline DDL 操作。
  2. 锁表与阻塞机制 :Offline DDL 采用的是“两表双写”方案。在执行过程中,系统需要新建一张对用户不可见的临时隐藏表,并等待所有相关事务结束以获取一个快照点。在这个数据补全和切换的过程中,会阻塞业务的写操作(DML) (读操作通常不受影响)。
  3. 与自动分区分裂的区别 :需要注意的是,不要将其与 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 住。