【有问必答】为什么添加主键比较耗时?

【 使用环境 】生产环境
【 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)提供日志信息即可。

observer.txt (277.8 KB)

DDL 里的主键操作比较复杂,属于 Offline DDL,实现方式也复杂。

所以也许是符合预期的,需要值班同学 @辞霜 和内核研发确认下。

看你上面截图的执行时间,优化方式是不是可以把 alter table 改成 drop table + create table,让 Offline 变 Online,哈哈~

参考:

推荐阅读:

属于Offline DDL是符合预期的,空表也会创建major,导致比较慢,不影响使用

1 个赞