PostgreSQL 查看数据库中对象的大小
本文介绍了在 PostgreSQL 如何查看数据库、表、索引和表空间的大小。
作为数据库管理者,您经常需要查看数据库的占用空间,这包括 数据库、表、索引和表空间的大小,以便为他们分配合理的存储空间。
PostgreSQL 数据库大小
您可以使用 pg_database_size()
函数获取整个数据库的大小。例如,以下语句返回 testdb
数据库的大小:
SELECT pg_database_size('testdb');
pg_database_size
------------------
9044483
pg_database_size()
函数以字节为单位返回数据库的大小,这不容易阅读。您可以使用 pg_size_pretty()
函数将字节转为更易于阅读值。如下:
SELECT
pg_size_pretty(
pg_database_size('testdb')
);
该语句返回以下结果:
pg_size_pretty
----------------
8833 kB
如果您想要要获取当前数据库服务器中所有数据库的大小,请使用以下语句:
SELECT
datname,
pg_size_pretty(pg_database_size(datname)) AS size
FROM pg_database;
datname | size
-------------+---------
postgres | 8561 kB
template1 | 8401 kB
template0 | 8401 kB
testdb | 8833 kB
sakila | 16 MB
testdb2 | 8521 kB
test_new_db | 8401 kB
PostgreSQL 表大小
您可以使用 pg_relation_size()
函数获取一个表的大小。例如,以下语句返回 Sakila 示例数据库中的 actor
表的大小:
SELECT
pg_size_pretty(
pg_relation_size('actor')
);
pg_size_pretty
----------------
16 kB
pg_relation_size()
函数返回表的数据的大小,不包含表中的索引的大小。如果要获取表的总的大小,请使用 pg_total_relation_size()
函数, 如下:
SELECT
pg_size_pretty(
pg_total_relation_size('actor')
);
pg_size_pretty
----------------
72 kB
要获取数据库中所有的表的大小,您可以使用如下语句:
SELECT
tablename,
pg_size_pretty(pg_total_relation_size('actor')) size
FROM pg_tables
WHERE schemaname = 'public';
tablename | size
----------------------+-------
actor | 72 kB
film | 72 kB
payment_p2007_02 | 72 kB
payment_p2007_03 | 72 kB
payment_p2007_04 | 72 kB
payment_p2007_05 | 72 kB
payment_p2007_06 | 72 kB
payment_p2007_01 | 72 kB
address | 72 kB
category | 72 kB
city | 72 kB
country | 72 kB
customer | 72 kB
film_actor | 72 kB
film_category | 72 kB
inventory | 72 kB
language | 72 kB
rental | 72 kB
staff | 72 kB
store | 72 kB
payment | 72 kB
film_copy | 72 kB
city_copy | 72 kB
film_r | 72 kB
film_ranting_g_title | 72 kB
PostgreSQL 索引大小
PostgreSQL pg_indexes_size()
函数用于获取一个指定表上的索引的大小。例如,要获取 actor
表的所有索引的总大小,请使用以下语句:
SELECT
pg_size_pretty(
pg_indexes_size('actor')
);
pg_size_pretty
----------------
32 kB
PostgreSQL 表空间大小
PostgreSQL pg_tablespace_size()
函数用于获取一个指定的表空间的大小。
以下语句返回 pg_default
表空间的大小:
SELECT
pg_size_pretty (
pg_tablespace_size('pg_default')
);
pg_size_pretty
----------------
67 MB
PostgreSQL 值大小
PostgreSQL pg_column_size()
函数用于获取指定的值占用的空间,例如:
以下语句返回一个 smallint
类型的值的大小:
select pg_column_size(1::smallint);
pg_column_size
----------------
2
以下语句返回一个 int
类型的值的大小:
select pg_column_size(1::int);
pg_column_size
----------------
4
以下语句返回一个 bigint
类型的值的大小:
select pg_column_size(1::bigint);
pg_column_size
----------------
8
结论
本文讲述了几个的函数来获取数据库、表、索引、表空间和值的大小。