PostgreSQL提供了以下几个方法查看表(索引)所占用空间大小:
1. 自己查找pg_class
sde=# select relpages*8/1024||'M' as 占用空间,reltuples 记录数 from pg_class where relname='gis_poi';
占用空间 | 记录数
----------+--------
6M | 26199
(1 行记录)
sde=# select relpages*8/1024||'M' as 占用空间,reltuples 记录数 from pg_class where relname='a57_ix1';
占用空间 | 记录数
----------+--------
2M | 26199
(1 行记录)
2. 使用psql的命令
sde=# \dt+ gis_poi
关联列表
架构模式 | 名称 | 类型 | 拥有者 | 大小 | 描述
----------+---------+--------+--------+---------+------
sde | gis_poi | 数据表 | sde | 6872 kB |
sde=# \di+ a57_ix1
关联列表
架构模式 | 名称 | 类型 | 拥有者 | 数据表 | 大小 | 描述
----------+---------+------+--------+---------+---------+------
sde | a57_ix1 | 索引 | sde | gis_poi | 2096 kB |
(1 行记录)
3. 统计表以及索引的详细空间占用情况
使用pgstattuple的扩展
sde=# select * from pgstattuple('gis_poi');
table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
7004160 | 26199 | 6737921 | 96.2 | 0 | 0 | 0 | 111360 | 1.59
(1 行记录)
sde=# select * from pgstattuple('a57_ix1');
table_len | tuple_count | tuple_len | tuple_percent | dead_tuple_count | dead_tuple_len | dead_tuple_percent | free_space | free_percent
-----------+-------------+-----------+---------------+------------------+----------------+--------------------+------------+--------------
2146304 | 26199 | 1047960 | 48.83 | 0 | 0 | 0 | 924984 | 43.1
(1 行记录)