在 StarRocks 中,可以通过以下 SQL 查询 每个数据库的数据表及其数据量大小(包括行数、存储占用等关键信息):
1. 查询所有数据库的表清单及数据量
-- 查询所有数据库的表名、行数、数据大小(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. 查询数据库的详细存储信息
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. 查询指定数据库的详细存储信息
-- 替换 '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
命令获取更精确的分区数据量:
-- 替换 'your_database' 和 'your_table' 为实际值
SHOW PARTITIONS FROM your_database.your_table;
结果包含以下关键列:
PartitionName
:分区名。DataSize
:分区数据大小(如3.5GB
)。RowCount
:分区行数。
5. 查询所有表的总数据量汇总
-- 按数据库汇总数据量(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;
注意事项:
- 估算值问题:
TABLE_ROWS
是统计估算值,不精确(尤其对高频写入的表)。如需精确行数,需对表执行SELECT COUNT(*)
(但大表可能耗时较长)。 - 权限要求:
执行上述查询需要至少SELECT
权限访问information_schema
数据库。 - 分区表优化:
对于分区表,建议直接查询分区信息(SHOW PARTITIONS
),结果更准确。
扩展:监控表增长趋势
如果需要监控表的数据增长,可以定期运行上述 SQL 并记录结果到监控系统(如 Prometheus + Grafana)。