starrocks的存储情况

在 StarRocks 中,可以通过以下 SQL 查询 每个数据库的数据表及其数据量大小(包括行数、存储占用等关键信息):


1. 查询所有数据库的表清单及数据量

sql 复制代码
-- 查询所有数据库的表名、行数、数据大小(MB/GB)
SELECT 
    t.TABLE_SCHEMA AS '数据库名',
    t.TABLE_NAME AS '表名',
    t.TABLE_ROWS AS '行数(估算)',
    ROUND(t.DATA_LENGTH / 1024 / 1024 / 1024, 2) AS '数据大小(GB)',
    ROUND(t.INDEX_LENGTH / 1024 / 1024, 2) AS '索引大小(MB)',
		ROUND(sum(t.DATA_LENGTH / 1024 / 1024/ 1024 ) over() , 2) as '总数据大小(GB)',
		ROUND(t.DATA_LENGTH / 1024 / 1024 / sum(t.DATA_LENGTH / 1024 / 1024 ) over() , 2) as '单表占比',
    t.TABLE_TYPE AS '表类型'
FROM 
    information_schema.TABLES t
WHERE 
    t.TABLE_SCHEMA NOT IN ('information_schema', 'sys', '_statistics_')
ORDER BY 
    t.DATA_LENGTH DESC;
	
关键字段说明
  • TABLE_SCHEMA:数据库名。
  • TABLE_NAME:表名。
  • TABLE_ROWS:表的行数(注意:这是估算值,非精确值)。
  • DATA_LENGTH:数据存储大小(字节)。
  • INDEX_LENGTH:索引大小(字节)。
  • TABLE_TYPE:表类型(如 BASE TABLE 表示普通表,VIEW 表示视图)。

2. 查询数据库的详细存储信息

sql 复制代码
SELECT 
    t.TABLE_SCHEMA AS '数据库名',
    count(1) AS '总表数',
    sum(t.TABLE_ROWS) AS '总行数(估算)',
		ROUND(sum(t.DATA_LENGTH / 1024 / 1024/ 1024 ) , 2) as '总数据大小(GB)'
FROM 
    information_schema.TABLES t
WHERE 
    t.TABLE_SCHEMA NOT IN ('information_schema', 'sys', '_statistics_')
GROUP BY TABLE_SCHEMA
ORDER BY ROUND(sum(t.DATA_LENGTH / 1024 / 1024/ 1024 ) , 2) desc 

3. 查询指定数据库的详细存储信息

sql 复制代码
-- 替换 'your_database_name' 为目标数据库名
SELECT 
    TABLE_NAME AS '表名',
    ROUND(DATA_LENGTH / 1024 / 1024, 2) AS '数据大小(MB)',
    ROUND(INDEX_LENGTH / 1024 / 1024, 2) AS '索引大小(MB)',
    TABLE_ROWS AS '行数(估算)',
    CREATE_TIME AS '创建时间'
FROM 
    information_schema.TABLES
WHERE 
    TABLE_SCHEMA = 'your_database_name'
ORDER BY 
    DATA_LENGTH DESC;

4. 精确统计表的分区大小(适用于分区表)

如果表是分区表,可以通过 StarRocks 内置的 SHOW PARTITIONS 命令获取更精确的分区数据量:

sql 复制代码
-- 替换 'your_database' 和 'your_table' 为实际值
SHOW PARTITIONS FROM your_database.your_table;

结果包含以下关键列:

  • PartitionName:分区名。
  • DataSize:分区数据大小(如 3.5GB)。
  • RowCount:分区行数。

5. 查询所有表的总数据量汇总

sql 复制代码
-- 按数据库汇总数据量(GB)
SELECT 
    TABLE_SCHEMA AS '数据库名',
    ROUND(SUM(DATA_LENGTH) / 1024 / 1024 / 1024, 2) AS '总数据大小(GB)',
    COUNT(*) AS '表数量'
FROM 
    information_schema.TABLES
GROUP BY 
    TABLE_SCHEMA
ORDER BY 
    SUM(DATA_LENGTH) DESC;

注意事项

  1. 估算值问题
    TABLE_ROWS 是统计估算值,不精确 (尤其对高频写入的表)。如需精确行数,需对表执行 SELECT COUNT(*)(但大表可能耗时较长)。
  2. 权限要求
    执行上述查询需要至少 SELECT 权限访问 information_schema 数据库。
  3. 分区表优化
    对于分区表,建议直接查询分区信息(SHOW PARTITIONS),结果更准确。

扩展:监控表增长趋势

如果需要监控表的数据增长,可以定期运行上述 SQL 并记录结果到监控系统(如 Prometheus + Grafana)。

相关推荐
IvorySQL40 分钟前
PostgreSQL 技术日报 (3月9日)|EXPLAIN ANALYZE 计时优化与复制语法讨论
数据库·postgresql·开源
stark张宇4 小时前
MySQL 核心内幕:从索引原理、字段选型到日志机制与外键约束,一篇打通数据库任督二脉
数据库·mysql·架构
倔强的石头_4 小时前
融合数据库架构实践:关系型、JSON与全文检索的“一库多能”深度解析
数据库
星辰员6 小时前
KingbaseES数据库:ksql 命令行用户与权限全攻略,从创建到删除
数据库
华仔啊20 小时前
千万别给数据库字段加默认值 null!真的会出问题
java·数据库·后端
随风飘的云2 天前
MySQL的慢查询优化解决思路
数据库
IvorySQL2 天前
PostgreSQL 技术日报 (3月7日)|生态更新与内核性能讨论
数据库·postgresql·开源
赵渝强老师2 天前
【赵渝强老师】金仓数据库的数据文件
数据库·国产数据库·kingbase·金仓数据库
随逸1772 天前
《Milvus向量数据库从入门到实战,手把手搭建语义检索系统》
数据库
神秘的猪头2 天前
🚀 React 开发者进阶:RAG 核心——手把手带你玩转 Milvus 向量数据库
数据库·后端·llm