【 使用环境 】生产环境
【 OB】
【 使用版本 】社区版OceanBase_CE 4.3.2.1
【问题描述】给空表增加或删除主键也需要近2秒,有什么优化方法吗
你的集群规模是什么样的。提供一下trace日志根据以下方法:
1)设置trace信息
SET ob_enable_show_trace=‘ON’;
2)执行sql。
3)获取上个命令的trace
select last_trace_id();
4)获取trace对应的节点
select query_sql,svr_ip from gv$ob_sql_audit where trace_id=‘第三步获取的trace信息’;
5)取对应的svr_ip节点 过滤日志
grep “第三步获取的trace信息” observer.log*
grep “第三步获取的trace信息” rootservice.log*
6)提供日志信息即可。
DDL 里的主键操作比较复杂,属于 Offline DDL,实现方式也复杂。
所以也许是符合预期的,需要值班同学 @辞霜 和内核研发确认下。
看你上面截图的执行时间,优化方式是不是可以把 alter table 改成 drop table + create table,让 Offline 变 Online,哈哈~
参考:
推荐阅读:
- 《OceanBase 里的 schema 是什么?》 讲了普通 DDL 的执行流程。
- 《OceanBase Alter Table 原理介绍》 讲了改主键的 Offline DDL 的执行流程。
属于Offline DDL是符合预期的,空表也会创建major,导致比较慢,不影响使用
1 个赞