表数据分布 oceanbase v4.2.1

@论坛小助手
oceanbase v4.2.1 我想查询具体表的数据分布应该怎么查

根据文档库中的信息,您可以使用 oceanbase.CDB_OB_TABLE_LOCATIONS 视图来查询具体表的数据分布。以下是具体的步骤和 SQL 示例:

  1. 查询表的分区分布
    使用以下 SQL 查询每个服务器(svr_ip)上该表的分区数量:

    SELECT svr_ip, count(1) 
    FROM oceanbase.CDB_OB_TABLE_LOCATIONS
    WHERE tenant_id = <租户ID> AND table_name = '<表名>'
    GROUP BY svr_ip 
    ORDER BY svr_ip;
    
    • <租户ID> 替换为您的实际租户 ID。
    • <表名> 替换为要查询的具体表名。
  2. 查询表的 Partition Leader 分布
    使用以下 SQL 查询每个服务器上该表的 Partition Leader 分布:

    SELECT svr_ip, count(1) 
    FROM oceanbase.CDB_OB_TABLE_LOCATIONS
    WHERE tenant_id = <租户ID> AND table_name = '<表名>' AND role = 'leader'
    GROUP BY svr_ip 
    ORDER BY svr_ip;
    
  3. 查询业务库下表的 Leader 分布(排除系统库)
    如果您只想查看业务库下的 Leader 分布,可以使用以下 SQL:

    SELECT svr_ip, count(1) 
    FROM oceanbase.CDB_OB_TABLE_LOCATIONS
    WHERE tenant_id = <租户ID> 
      AND table_name = '<表名>' 
      AND role = 'LEADER' 
      AND DATABASE_NAME NOT IN ('oceanbase', 'mysql')
    GROUP BY svr_ip 
    ORDER BY svr_ip;
    

注意事项

  • 确保您有权限访问系统租户下的视图 oceanbase.CDB_OB_TABLE_LOCATIONS
  • 如果您需要查询整个数据库中所有表的分布情况,可以去掉 table_name 的过滤条件。
  • 以上 SQL 示例中的 tenant_id 是 OceanBase 租户的唯一标识符,请根据实际情况替换。

更多关于 CDB_OB_TABLE_LOCATIONS 视图的详细信息,您可以参考 OceanBase 官方文档 中的相关说明。

更多信息请查看:

  1. 日志归档相关视图介绍
  2. 日志流和副本概述
  3. 日志流副本概述
  4. 使用命令行进行运维
  5. MySQL 兼容视图
  6. chmod -R 777 /FLINK_HOME/flink-1.15.3/*
  7. TableAPI 实现介绍
  8. OceanBase 术语
  9. 数据备份相关视图介绍
1 个赞

敏捷诊断工具obdiag 有个一键洞察,你可以感受下

https://www.oceanbase.com/docs/common-obdiag-cn-1000000002488243

1 个赞