代码分析求助:删除分区后,实际的分区数据时何时以及如何删除的?

执行drop partition语句后,目前OB在DDL流程中仅会修改schema和更新相关内部表信息,然后就返回客户端删除成功了。

想请教下大佬们:

  1. 底层的分区数据是什么时候彻底删除的?OB如何找到那些需要删除分区呢?
  2. 彻底删除分区的整体逻辑大概是怎么样的?

谢谢!!!

请稍等下

当分区或表被删除的时候,OBPGPartition 及其所有包含的存储结构将被删除。但是并非立即释放资源,要等所有引用失效且资源不被使用时执行清理。

相关博客:OceanBase 社区

老师您好,补充一下源码版本是3.1.4

您说的“存储结构将被删除”,“存储结构”是指schema吗?314源码中我只看到对__all_part/__all_part_history等内部表的更新,最后publish schema的流程,并没有去存储层执行删除分区的操作。

另外源码中是怎么判断到“所有引用失效且资源不被使用” 呢,具体是哪个函数,以及在什么时候呢(合并?负载均衡?)?

存储结构是指OBPGPartition,可以看下上一个回答中有贴的博客,竹翁老师有在里面对分区的整个生命周期进行描述