【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】V4.2.5
【问题描述】查询某张表占用的 所有分区的大小,以及索引(本地,全局,全文等)大小。 包含逻辑大小和实际硬盘占用大小
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】V4.2.5
【问题描述】查询某张表占用的 所有分区的大小,以及索引(本地,全局,全文等)大小。 包含逻辑大小和实际硬盘占用大小
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!
用户问题: “在 OceanBase V4.2.5 中,如何查询某张表占用的所有分区的大小,以及索引(本地、全局、全文等)的大小,包括逻辑大小和实际硬盘占用大小?”
对于您提到的问题,obdiag 工具主要针对的是日志采集与根因分析,并不直接适用于查询表及索引大小的场景。为了帮助您获取表和索引的大小信息,建议您通过执行 SQL 查询来获得这些数据。
您可以使用如下 SQL 查询语句来获取相关信息:
查询表和分区的大小:
gv$partition
视图来获取每个分区的行数和总大小。SELECT table_name, partition_name, num_rows, table_size/1024/1024 AS size_mb
FROM gv$partition
WHERE table_name = '您的表名';
gv$tenant_stat
或者 gv$unit_stat
来估算磁盘上的实际占用情况,但请注意这并不是精确值,因为涉及到压缩比等因素。查询索引大小:
gv$index
视图来了解索引的相关信息。SELECT index_name, leaf_blocks*32/1024 AS size_mb
FROM gv$index
WHERE table_name = '您的表名';
为了更准确地回答您的问题,请提供以下信息:
以上提供的SQL语句可以根据您给出的详细信息进一步调整优化。如果您对如何执行上述查询有任何疑问,或者需要更多帮助,请随时告知。
附上敏捷诊断工具 obdiag 使用帮助链接
select t1.table_name,
round(sum(t2.data_size)/1024/1024/1024,2) as data_size_gb,
round(sum(t2.required_size)/1024/1024/1024,2) as required_size_gb
from dba_ob_tenants t,cdb_ob_table_locations t1,cdb_ob_tablet_replicas t2
where t.tenant_id=t1.tenant_id
and t1.svr_ip=t2.svr_ip
and t1.tenant_id=t2.tenant_id
and t1.ls_id=t2.ls_id
and t1.tablet_id=t2.tablet_id
and t1.role=‘leader’
and t.tenant_name=‘test1’
and t1.database_name=‘sbtest’
and t1.table_name=‘sbtest1’
group by t1.table_name
order by 3 desc;
–查询某个租户各个索引大小
select a.TENANT_ID, a.DATABASE_NAME, a.TABLE_NAME, a.TABLE_ID, sum( case when b.nested_offset = 0 then IFNULL(b.data_block_count+b.index_block_count+b.linked_block_count, 0) * 2 * 1024 * 1024 else IFNULL(b.size, 0) end ) /1024.0/1024/1024 as data_size_in_GB from CDB_OB_TABLE_LOCATIONS a inner join __all_virtual_table_mgr b on a.svr_ip = b.svr_ip and a.svr_port=b.svr_port and a.tenant_id = b.tenant_id and a.LS_ID = b.LS_ID and a.TABLET_ID = b.TABLET_ID and a.role = ‘LEADER’ and a.tenant_id = 1002 and b.table_type >= 10 and b.size > 0 group by a.TABLE_ID limit 3;