PostgreSQL 查看数据库及表中数据占用空间大小

1、应用场景

场景1:查看数据库占用空间大小

SELECT pg_size_pretty(pg_database_size('database_name'));

场景2:查看每张表占用空间大小

SELECT
    table_schema || '.' || table_name AS table,
    #仅表数据
    pg_size_pretty(pg_relation_size(table_schema || '.' || table_name)) AS size
    #表数据+索引数据
    #pg_size_pretty(pg_total_relation_size(table_schema || '.' || table_name)) AS size
FROM information_schema.tables
WHERE 
    table_schema = 'public'
ORDER BY
    pg_relation_size(table_schema || '.' || table_name) DESC;
    #pg_total_relation_size(table_schema || '.' || table_name) DESC;

查看特定表占用大小, 可用:

#仅表数据
SELECT pg_size_pretty(pg_relation_size('schemal_test.table_test'));
#表数据+索引数据
SELECT pg_size_pretty(pg_total_relation_size('schemal_test.table_test'));
2、PostgreSQL 空间大小知多少
表空间(Table Space)
#查找 postgresql 表空间大小
SELECT pg_size_pretty (pg_tablespace_size ('tablespace_name'));

#所有表空间的名称和大小
SELECT spcname, pg_size_pretty(pg_tablespace_size(spcname)) as size from pg_tablespace;
数据库(Database)
#查找单个 postgresql 数据库大小
SELECT pg_size_pretty(pg_database_size('db_name'));

#所有数据库的总大小,以易读的格式显示
SELECT pg_size_pretty(SUM(pg_database_size(datname))) FROM pg_database;


#查看所有数据库的列表及其大小(以 GB 为单位),降序
SELECT
	pg_database.datname as db_name,
	pg_database_size(pg_database.datname)/1024/1024/1024 as db_size
FROM pg_database ORDER by db_size DESC;

#或 pg_size_pretty用修饰大小
SELECT
	pg_database.datname as db_name,
查看数据数据占用的空间大小通常依赖于所使用的数据库管理系统。以下是针对几种常见数据库系统的基本操作: 1. **MySQL**: 使用`SHOW CREATE TABLE`命令可以查看结构,包括数据字段和存储引擎,从而间接了解数据占用的空间。不过这不会直接给出每个记录的实际大小,但可以估算。 ```sql SHOW CREATE TABLE table_name; ``` 为了获取单个字段的数据大小,你可以计算每个字段的长度乘以对应的字符集的最大长度。 2. **SQL Server**: 可以使用`sys.dm_db_column_space_usage`动态管理视图来查看每个各列的空间使用情况。 ```sql SELECT object_id, name AS TableName, SUM(row_size) OVER (PARTITION BY object_id) AS TotalBytes FROM sys.dm_db_column_space_usage WHERE object_id = OBJECT_ID('your_table_name') ``` 3. **Oracle**: 可以通过`DBA_DATAFILE`和`USER_DATAFILES`静态性能视图来检查整个数据库文件,然后分析特定所在的段空间。 4. **PostgreSQL**: 可以查询`pg_stat_user_tables`视图,但精确空间信息需要额外计算,因为不是所有的元数据都被直接记录。 ```sql SELECT schemaname || '.' || tablename, pg_total_relation_size(tablename) AS total_bytes FROM pg_stat_user_tables WHERE tablename = 'your_table_name'; ``` 5. **MongoDB**: 对于NoSQL数据库如MongoDB,可以使用`db.collection.stats()`来查看集合的信息,包括文档数和平均文档大小。 ```javascript db.your_collection_name.stats(); ``` 请注意,实际空间可能因索引、B树节点等因素而略有差异。对于更详细的统计,可能需要第三方工具或数据库提供的专门功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值