Online DDL 和 Offline DDL 操作
在线 DDL (Online DDL)
- 定义:在进行 DDL 操作时,用户仍然可以访问数据库,包括读取和写入操作。
- 优点:对业务的影响小,能够在系统运行时执行 DDL 操作,通常用于高可用性要求的场景。
- 特点:通常支持并发访问和更少的锁定,能够减少停机时间。
离线 DDL (Offline DDL)
- 定义:进行 DDL 操作时,会锁定相关表,导致用户无法访问数据库的相关数据 。
- 优点:简单且容易实现,适用于对业务影响不大的情况。
- 特点:在执行 DDL 操作时,会造成一定的停机时间,影响正常的查询和事务处理。
事务关联性
- 事务:是指一组操作,要么全部成功,要么全部失败,并且事务运行时保证数据的一致性。
- 在线 DDL 和离线 DDL 操作通常是单独的,DDL 操作本身在某些数据库管理系统中可能不支持被事务控制(尤其是离线 DDL)。
事务等待策略
- 在线 DDL:通常不需要等待当前事务结束,可以并发执行。
- 离线 DDL:通常需要等待当前事务结束,因为在执行期间会锁定相关表。
seekdb 所支持的 Online DDL 操作如下表所示。
| 分类 | 操作 | 耗时 | 备注 | 创建物化视图日志(mlog)后 DDL 支持情况 |
|---|---|---|---|---|
| 索引操作 | 增加索引 | 与数据量有关,需要重整数据 | 主要涉及全局/局部索引、全局索引带有分区和空间索引。 | 支持 |
| 索引操作 | 删除索引 | 与是否有活跃事务有关 | 暂无 | 支持 |
| 索引操作 | 重命名索引 | 只需要修改元数据 | 暂无 |