当我进入sql-8.2 / base /以检查我的表占用了多少空间,有很多文件由一个数字命名.我如何找到存储该表的特定表和索引的特定文件?
例如,我按日期排序文件(最新的),但在特定时间段有几个:
-rw------- 1 postgres sql 1.0G Dec 4 13:41 15426233 -rw------- 1 postgres sql 149M Dec 4 13:41 15426233.4 -rw------- 1 postgres sql 1.0G Dec 4 13:41 15426233.3 drwx------ 3 postgres sql 75K Dec 4 13:40 . -rw------- 1 postgres sql 1.0G Dec 4 13:34 15426233.2 -rw------- 1 postgres sql 1.0G Dec 4 13:28 15426233.1 -rw------- 1 postgres sql 3.6M Dec 4 11:23 1249 -rw------- 1 postgres sql 584K Dec 4 11:23 2659 -rw------- 1 postgres sql 672K Dec 4 11:23 2663 -rw------- 1 postgres sql 136K Dec 4 11:23 2662 -rw------- 1 postgres sql 848K Dec 4 11:23 2608 -rw------- 1 postgres sql 2.6M Dec 4 11:23 2658 -rw------- 1 postgres sql 600K Dec 4 11:23 2674 -rw------- 1 postgres sql 56K Dec 4 11:23 2679 -rw------- 1 postgres sql 632K Dec 4 11:23 2673 -rw------- 1 postgres sql 72K Dec 4 11:23 2678 -rw------- 1 postgres sql 1.8M Dec 4 11:22 2619 -rw------- 1 postgres sql 112K Dec 4 11:21 2696 -rw------- 1 postgres sql 1007M Dec 4 11:21 15426228.5 -rw------- 1 postgres sql 1.0G Dec 4 11:19 15426228.4 -rw------- 1 postgres sql 1.0G Dec 4 11:19 15426228.3 -rw------- 1 postgres sql 1.0G Dec 4 11:18 15426228.2 -rw------- 1 postgres sql 1.0G Dec 4 11:17 15426228.1 -rw------- 1 postgres sql 1.0G Dec 4 11:16 15426228
每个目录表示数据库(通过创建数据库创建).数字是数据库的oid.要查看oid及其名称,请运行以下语句:
select oid,datname from pg_database;
在每个目录中,每个文件对应于pg_class中的一个条目,其中oid与目录中文件的编号相匹配:
您可以通过运行语句来查看它们与它们之间的关系:
select cl.relfilenode,nsp.nspname as schema_name,cl.relname,cl.relkind from pg_class cl join pg_namespace nsp on cl.relnamespace = nsp.oid;
您可能还想查看手册
> Determining Disk Usage
> Database File Layout
> System catalogs
Btw:如果你仍然运行8.2,你应该尽快升级.