1.DDL语句处理
OceanBase 数据库支持传统数据库的 DDL 语句,DDL 类型的 SQL 语句不会被优化器处理,
而是作为 command 发送到 RootServer,由 RootServer 进行处理,比如典型的建表语句。
在 OceanBase 数据库上的执行流程如下图所示:
Client
| OBSERVER2
| /
OBServer1---->RootServer(异步刷新)
| | \
<-----------| OBSERVER3
(异步刷新)
OBSERVER1:解析生成变更信息
RootServer:
1.变更信息持久化
2.本地schema刷新
3.通知observer异步刷新
2.DDL语句处理说明
◼ OceanBase支持传统数据库的DDL语句,自动完成全局统一的schema变更,无需用户在多节点间做schema一
致性检查
◼ DDL任务由OceanBase的RootServer统一调度执行,保证全局范围内的schema一致性
◼ 对于所有支持的 DDL 操作都是 OnLine 的,DDL不会产生表锁,在执行 DDL 的过程中不会阻塞业务的读写操
作
◼ DML根据schema信息的变更自动记录格式,对业务零影响
◼ DML与DDL互相不阻塞,提高性能
3.总结
OceanBase,TIDB 在DDL的处理上与传统数据库锁表的机制有锁不同。可以独立操作,不影响彼此的运行。这是一个非常大的改进。TIDB是通过将DML,DDL放置在不同的任务队列中执行,互相不影响。这避免了每次操作都必须等到晚上才能进行的麻烦事。