我到底该怎么查询一个表实际占用的物理磁盘空间

社区版4.2.16
我就想查询一个表实际占用的物理磁盘空间,到底该怎么查?搜了社区文档,找到一堆SQL,结果函数在每个版本还不通用,每个人回复的也不一样,能给个究级准确的吗。

SELECT sum(size)/1024/1024/1024 FROM (SELECT DATABASE_NAME,TABLE_NAME,TABLE_ID,PARTITION_NAME,TABLET_ID,ROLE
FROM oceanbase.DBA_OB_TABLE_LOCATIONS ) AA full join
(SELECT distinct(TABLET_ID) ,size
FROM oceanbase.GV$OB_SSTABLES ) BB on AA.TABLET_ID=BB.TABLET_ID
WHERE AA.role=‘leader’ and AA.table_name=’${表名}’;

推荐你一个方法,用诊断工具obdiag 的一键洞察功能能查看大部分你关心的OB相关的信息,还不用管不同版本的SQL差异,全部由官方的工具帮你处理好了。
比如:

obdiag display scene run --scene=observer.table_datasize --env tenant_id=1 --env database_name=test --env table_name=test

文档:https://www.oceanbase.com/docs/common-obdiag-cn-1000000001768221

你如果想有一些自己常用的SQL,你也可以自行DIY放到~/.obdiag/display/里面去

好的,我测试一下。

多补充一点,obdiag display 实现的全部SQL可以在~/.obdiag/display目录下能查到,或者直接看github上的也行:https://github.com/oceanbase/obdiag/tree/master/plugins/display/tasks/observer