---
title: 如何查看表和索引的大小和磁盘空间使用-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于如何查看表和索引的大小和磁盘空间使用相关的常见问题和使用技巧，帮助您快速解决如何查看表和索引的大小和磁盘空间使用的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# 如何查看表和索引的大小和磁盘空间使用

更新时间：2026-06-16 09:21

适用版本： V2.1.x、V2.2.x、V3.1.x、V3.2.x 内容类型：How-to  

本文总结如何在 OceanBase 数据库中计算各个租户的单表占用磁盘空间大小以及真实的表大小。这里用 MySQL 租户下的表 t1 来举例如何计算，Oracle 租户使用同样的计算方式。

## 适用版本

OceanBase 数据库 V2.x 和 V3.x 版本。

## 操作步骤

#### 注意

以下 SQL 均在系统租户下执行。

可以从以下 3 张系统表来查询表或索引的分区大小和磁盘空间使用。

- `__all_virtual_meta_table`：包含了表分区和全局索引的副本位置信息，以及合并时 major sstable 的大小统计。该表不包含本地索引的信息。

  ```shell
  ## 查看表
  select concat(round(data_size/1024/1024,2),' MB') data_size,row_count
  from __all_virtual_meta_table
  where role=1
  and table_id=xxx
  and partition_id=xxx;

  ```
 - `__all_virtual_table_mgr`：包含了表分区和索引分区的 SSTable、MEMTable 的相关属性，比如 size、版本号、事务等。

     - 当 index_id=table_id 时，表示的是基表。
     - 该表中 table_type 的定义如下。

      ```shell
      enum TableType
      {
      MEMTABLE = 0,
      MAJOR_SSTABLE = 1,
      MINOR_SSTABLE = 2, // obsoleted type after 2.2
      TRANS_SSTABLE = 3, // new table type from 3.1
      MULTI_VERSION_MINOR_SSTABLE = 4,
      COMPLEMENT_MINOR_SSTABLE  = 5, // new table type from 3.1
      MULTI_VERSION_SPARSE_MINOR_SSTABLE = 6, // reserved table type
      MINI_MINOR_SSTABLE = 7,
      BUF_MINOR_SSTABLE = 8,
      MAX_TABLE_TYPE
      };

      ```

  查询示例。

  ```shell
  select m.svr_ip,t.table_name,m.table_id,m.index_id,m.partition_id,
  m.table_type,
  m.size,m.compact_row
  from __all_virtual_table_mgr m,
  __all_virtual_table t
  where m.table_id=t.table_id
  and m.svr_ip='11.xxx.xx.xxx'
  and t.table_name='BMSQL_OORDER'
  and m.partition_id=118;

  ```

  ```shell
  +---------------+--------------+------------------+------------------+--------------+------------+----------+-------------+
  | svr_ip        | table_name   | table_id         | index_id         | partition_id | table_type | size     | compact_row |
  +---------------+--------------+------------------+------------------+--------------+------------+----------+-------------+
  | 11.xxx.xx.xxx | BMSQL_OORDER | 1105009185965277 | 1105009185965277 |          118 |          1 | 22579718 |           1 |
  | 11.xxx.xx.xxx | BMSQL_OORDER | 1105009185965277 | 1105009185965277 |          118 |          7 |        0 |           1 |
  | 11.xxx.xx.xxx | BMSQL_OORDER | 1105009185965277 | 1105009185965277 |          118 |          5 |        0 |           1 |
  | 11.xxx.xx.xxx | BMSQL_OORDER | 1105009185965277 | 1105009185965278 |          118 |          1 |  3291129 |           1 |
  | 11.xxx.xx.xxx | BMSQL_OORDER | 1105009185965277 | 1105009185965278 |          118 |          7 |        0 |           1 |
  | 11.xxx.xx.xxx | BMSQL_OORDER | 1105009185965277 | 1105009185965278 |          118 |          5 |        0 |           1 |
  +---------------+--------------+------------------+------------------+--------------+------------+----------+-------------+

  ```
 - `__all_virtual_storage_stat`：包含了存储层统计的表分区、索引分区的 SSTable 的统计信息。

     - 当 sstable_id<>table_id 时，sstable_id 是 index_id。
     - store_type 的定义与 __all_virtual_table_mgr 表中 table_type 的定义一致。

  ```shell
  select t.table_name,m.table_id,m.sstable_id,m.partition_id,
  m.store_type,
  m.occupy_size,m.used_size,m.row_count
  from __all_virtual_storage_stat m,
  __all_virtual_table t
  where m.role=1
  and m.table_id=t.table_id
  and t.table_name='BMSQL_OORDER'
  and m.partition_id=118;

  ```

  ```shell
  +--------------+------------------+------------------+--------------+------------+-------------+-----------+-----------+
  | table_name   | table_id         | sstable_id       | partition_id | store_type | occupy_size | used_size | row_count |
  +--------------+------------------+------------------+--------------+------------+-------------+-----------+-----------+
  | BMSQL_OORDER | 1105009185965277 | 1105009185965277 |          118 |          1 |    22579718 |  23068672 |   2731051 |
  | BMSQL_OORDER | 1105009185965277 | 1105009185965277 |          118 |          7 |           0 |         0 |         0 |
  | BMSQL_OORDER | 1105009185965277 | 1105009185965277 |          118 |          5 |           0 |         0 |         0 |
  | BMSQL_OORDER | 1105009185965277 | 1105009185965278 |          118 |          1 |     3291129 |   4194304 |   2731051 |
  | BMSQL_OORDER | 1105009185965277 | 1105009185965278 |          118 |          7 |           0 |         0 |         0 |
  | BMSQL_OORDER | 1105009185965277 | 1105009185965278 |          118 |          5 |           0 |         0 |         0 |
  +--------------+------------------+------------------+--------------+------------+-------------+-----------+-----------+

  ```

通常，使用 `__all_virtual_table_mgr`、`__all_virtual_storage_stat` 查询出来的 table size 会比 `__all_virtual_meta_table` 大，因为 `__all_virtual_meta_table` 只包含 major sstable 的统计。

上一篇

[OceanBase 数据库 V4.2 数据文件按需扩展](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000366660)

下一篇

[OceanBase 数据库中怎么查看临时文件的磁盘空间占用](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000209899) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
