开发者社区 问答 正文

oceanbase如何统计某个table的大小,包含表的行数和表占用的磁盘空间?

oceanbase如何统计某个table的大小,包含表的行数和表占用的磁盘空间?https://ask.oceanbase.com/t/topic/35603543 这个回答的SQL好像不对,错误代码: 1146
Table 'oceanbase.__all_virtual_meta_table' doesn't exist.版本,社区4.1

展开
收起
阿遇202411 2024-01-09 16:23:11 1374 分享 版权
来自: OceanBase
3 条回答
写回答
取消 提交回答
  • 那个回答里的语句适用于3.x版本的ob。此回答整理自钉群“[社区]技术答疑群OceanBase”

    2024-01-10 07:54:42
    赞同 展开评论
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在OceanBase 4.1版本中,您可以使用以下SQL语句来统计某个表的大小,包括表的行数和表占用的磁盘空间:

    SELECT
        t.table_name,
        t.row_count,
        SUM(s.total_size) AS total_disk_space
    FROM
        oceanbase.__all_table t,
        oceanbase.__all_table_statistics s
    WHERE
        t.table_id = s.table_id
        AND t.table_name = 'your_table_name'
    GROUP BY
        t.table_name,
        t.row_count;
    

    请将your_table_name替换为您要查询的表名。

    2024-01-09 21:17:22
    赞同 展开评论
  • 对于OceanBase 4.1社区版本,统计某个表的大小(包含行数和磁盘空间占用)可以通过以下SQL语句实现:

    获取表的行数:

    SELECT TABLE_ROWS 
    FROM information_schema.TABLES 
    WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
    

    但请注意,OceanBase并不直接提供查看单个表在磁盘上确切占用空间大小的方法。通常数据库系统中,表的实际磁盘占用会受到数据压缩、存储引擎内部优化以及空闲空间回收等因素的影响,因此难以精确计算。

    如果你需要估算或监控表的大致空间使用情况,可以考虑定期执行全表扫描并结合数据字节数来粗略估计。例如:

    -- 获取表中所有数据的总字节数作为大致的大小参考
    SELECT SUM(DATA_LENGTH) AS estimated_size_bytes 
    FROM information_schema.COLUMNS 
    WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
    
    2024-01-09 16:59:36
    赞同 展开评论