如何查看DuckDB中各表存储大小及估算文件内表占比?
查看DuckDB表存储大小及计算占比的操作方法
一、查看所有表的存储详情
连接到目标DuckDB文件后,直接用内置的duckdb_tables()函数查询表的存储数据,这是最直接的方式:
-- 查看main schema下所有表的存储信息 SELECT table_name, total_bytes AS uncompressed_size_bytes, -- 未压缩的原始数据大小 compressed_bytes AS actual_storage_bytes, -- 磁盘上实际占用的压缩后大小 ROUND(compressed_bytes::FLOAT / total_bytes * 100, 2) AS compression_rate_percent FROM duckdb_tables() WHERE table_schema = 'main';
说明:如果数据库使用了自定义schema,去掉
WHERE条件或修改table_schema的值即可。
二、计算各表占750MB数据库文件的存储占比
已知数据库文件总大小为750MB,先将其转换为字节(750 * 1024 * 1024 = 786432000),再结合表的实际存储大小计算占比:
SELECT table_name, ROUND(compressed_bytes::FLOAT / (1024*1024), 2) AS size_mb, ROUND(compressed_bytes::FLOAT / 786432000 * 100, 2) AS storage_percent FROM duckdb_tables() WHERE table_schema = 'main' ORDER BY storage_percent DESC;
注意:各表
compressed_bytes的总和可能略小于750MB,因为DuckDB文件还包含元数据、事务日志等非表存储开销,属于正常现象。
额外验证
如果想确认数据库文件的实际总大小,可执行:
PRAGMA database_size;
返回结果可与你提供的750MB做核对,确保计算基准准确。
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

