用__all_tenant_meta_table替换__all_virtual_meta_table查看库表记录数和占用空间(估值)

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】OB
【 使用版本 】V3.1.5
【问题描述】OB中查看库表记录数和占用空间(估值)需要__all_virtual_meta_table,但是该表需要root权限,生产环境下往往没有root权限,是否这个表可以修改为__all_tenant_meta_table呢?我看他们的表结构也差不多的样子呢@论坛小助手

3 个赞

在 OceanBase V3.1.5 版本中,使用 __all_tenant_meta_table 来查询库表的记录数和占用空间(估值)理论上是可以的,但需要注意的是,这个表主要用于内部元数据管理和维护,可能不会直接提供最准确或最新的统计信息。对于获取表的记录数和空间占用情况,通常推荐使用系统提供的视图或函数,如 information_schema.tablesoceanbase.sys.V$OB_TABLES 等,因为这些视图或函数经过了优化,更适合用于外部查询。

不过,如果您确实想要使用 __all_tenant_meta_table,可以尝试以下查询:

SELECT 
  table_id,
  table_name,
  row_count,
  data_size
FROM 
  oceanbase.__all_tenant_meta_table
WHERE 
  table_type = 'USER TABLE';

这个查询会返回每个用户表的表ID、表名、记录数和数据大小。但是请注意:

  1. 记录数 (row_count) 可能不是实时的,而是基于最近一次统计信息更新的结果。
  2. 数据大小 (data_size) 也可能是估算值,不一定非常精确。
  3. 表类型 (table_type) 过滤为 'USER TABLE',确保只查询用户表,排除系统表等。

建议

  1. 使用官方推荐的视图:如果您的目的是获取准确的表记录数和空间占用情况,建议使用 information_schema.tablesoceanbase.sys.V$OB_TABLES 等官方推荐的视图。
  2. 定期统计信息更新:确保定期运行 ANALYZE TABLE 语句来更新表的统计信息,这将提高查询的准确性。

如果您有任何其他问题或需要进一步的帮助,请告诉我!

附上敏捷诊断工具 obdiag 使用帮助链接

5 个赞

thanks

1 个赞

厉害,向大佬学习

2 个赞

厉害

2 个赞

细看看字典结构介绍

1 个赞

刚好遇到

太强了

1 个赞