0

有人可以提供一些澄清吗?

我了解 /base 文件夹显示每个数据库的数据文件夹。在 PgAdmin 中,我在 1 个服务器下列出了 13 个数据库。在 /base 文件夹中,有 14 个文件夹。所以这应该是每个数据库 1 个,服务器 1 个等于 14。我不知道如何知道哪个文件夹用于哪个数据库。但是,只有一个拥有大量数据。当我在系统上搜索大文件时,会显示:

16M: /var/lib/pgsql/9.2/data/base/18642/18652
13M: /var/lib/pgsql/9.2/data/base/18642/18751
1.0G: /var/lib/pgsql/9.2/data/base/21719/21804
12M: /var/lib/pgsql/9.2/data/base/21719/21806
15M: /var/lib/pgsql/9.2/data/base/21719/21750
20M: /var/lib/pgsql/9.2/data/base/21719/21837
118M: /var/lib/pgsql/9.2/data/base/21719/21834

现在,如果这实际上是 (21719) 员工使用的唯一正在运行的数据库,那么当我存档 (pgdump) 时,转储的大小约为 6 Gig。转储的大小与上面列出的数据不匹配。

有人可以解释我的困惑吗?

谢谢一堆。

这是试图找出为什么我有将近 700 gig 的驱动器空间被使用的结果,而它上面唯一的东西是 postgresql 和一个偶尔失控的 vnc-error-log 会占用驱动器空间(想出了如何解决这个问题) . 但是,我仍然使用了超过 60% 的驱动器,我无法解释它,并在 postgresql 中找到了数据大小。

感谢您对 postgresql 数据库数据提供的任何见解

4

1 回答 1

1

我不知道如何知道哪个文件夹用于哪个数据库

文件夹名称是数据库的 OID,您可以通过以下 SQL 查询获得它,以及根据 SQL 引擎的每个 db 大小:

select oid,datname,pg_database_size(datname) from pg_database;

如果有 13 个数据库和 14 个文件夹,则附加文件夹可能是pgsql_tmp用于临时文件的目录。pgAdmin的概念server不会在特定服务器的数据目录中发挥作用。

同样如评论中所述,由于压缩,转储大小可能大于磁盘大小。它也可以更小,因为它不包含任何索引数据。总的来说,知道磁盘上的大小对预测 SQL 转储的大小没有多大帮助,反之亦然。

于 2013-09-11T21:51:57.070 回答