@论坛小助手
oceanbase v4.2.1 我想查询具体表的数据分布应该怎么查
根据文档库中的信息,您可以使用 oceanbase.CDB_OB_TABLE_LOCATIONS
视图来查询具体表的数据分布。以下是具体的步骤和 SQL 示例:
-
查询表的分区分布
使用以下 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。 - 将
<表名>
替换为要查询的具体表名。
- 将
-
查询表的 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;
-
查询业务库下表的 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 个赞