【 使用环境 】测试环境
【 OB or 其他组件 】ob4.0-ce
【 使用版本 】ob4.0-ce
【问题描述】OceanBase迁移表,相同的数据分区表占用的磁盘空间比非分区表多很多
【复现路径】
使用oms迁移6张表,有2张1000多万的表,一张600多万的表,另外三张是100多万,迁移之前的磁盘占用情况:
select svr_ip,round(total_size/1024/1024/1024) total_size,round(free_size/1024/1024/1024) free_size,round((total_size-free_size)/1024/1024/1024) used_size from oceanbase.__all_virtual_disk_stat;
select /*+ parallel(30) / svr_ip, table_type, sum(size) / 1024 / 1024 / 1024 as size_G from __all_virtual_table_mgr where table_type > 0 group by 1,2 order by 3 desc;
select /+ parallel(30) */ svr_ip, sum(original_size)/1024/1024/1024 as original_size_G, sum(occupy_size)/1024/1024/1024 as occupy_size_G from __all_virtual_tablet_sstable_macro_info group by 1 order by 2 desc;
(1)将这6张表迁移到OceanBase,非分区,合并转储完成后,磁盘占用情况:
select svr_ip,round(total_size/1024/1024/1024) total_size,round(free_size/1024/1024/1024) free_size,round((total_size-free_size)/1024/1024/1024) used_size from oceanbase.__all_virtual_disk_stat;
select /*+ parallel(30) / svr_ip, table_type, sum(size) / 1024 / 1024 / 1024 as size_G from __all_virtual_table_mgr where table_type > 0 group by 1,2 order by 3 desc;
、
select /+ parallel(30) */ svr_ip, sum(original_size)/1024/1024/1024 as original_size_G, sum(occupy_size)/1024/1024/1024 as occupy_size_G from __all_virtual_tablet_sstable_macro_info group by 1 order by 2 desc;
(2)将这6张表迁移到OceanBase的分区表(根据order_id做100个hash分区,order_id是主键),合并转储完成后,磁盘占用情况:
select svr_ip,round(total_size/1024/1024/1024) total_size,round(free_size/1024/1024/1024) free_size,round((total_size-free_size)/1024/1024/1024) used_size from oceanbase.__all_virtual_disk_stat;
select /*+ parallel(30) / svr_ip, table_type, sum(size) / 1024 / 1024 / 1024 as size_G from __all_virtual_table_mgr where table_type > 0 group by 1,2 order by 3 desc;
select /+ parallel(30) */ svr_ip, sum(original_size)/1024/1024/1024 as original_size_G, sum(occupy_size)/1024/1024/1024 as occupy_size_G from __all_virtual_tablet_sstable_macro_info group by 1 order by 2 desc;
可见,迁移到OceanBase非分区表,磁盘占用(64-60=)4G,但是将相同的表和数据迁移到OceanBase的分区表后,占用空间是(92-64)28G,为什么相同的表和数据分区和非分区占用的磁盘空间差距这么大?
【问题现象及影响】
【附件】