gpt4 book ai didi

postgresql - 如何找到特定操作系统数据文件关联的 postgres 表?

转载 作者:行者123 更新时间:2023-11-29 13:19:19 25 4
gpt4 key购买 nike

我有一个 postgres 9.3 数据库,针对 pg_class 的查询报告表空间使用的总空间为 568G,服务器上的相应文件报告为 685G。

不应该所有的文件库都出现在 pg_class 中,还是我遗漏了什么。例如,有名为“103154174”、“103154174.1”等到“.7”的文件。 103154174 没有出现在 pg_class 中。 (FWIW,这个文件的时间戳是今年 6 月 5 日)。

我错过了什么吗?当我从 pg_class 中选择 pg_relation_filepath(c.oid) 时,我正在使用的数据库目录中的那个文件不应该出现吗?或者它是否可以是包含不同命名文件的不同表的一部分?

这是我用来识别服务器文件的查询:

SELECT pg_relation_filepath(c.oid) filepath,
nspname,
relname,
relnamespace,
reltablespace,
(relpages * 8) / 1024 size_mb,
sum((relpages * 8) / 1024) over (partition by relnamespace) ns_total_size_mb,
sum((relpages * 8) / 1024) over (partition by reltablespace) ts_total_size_mb,
sum((relpages * 8) / 1024) over (partition by 'x') total_size_mb,
sum((relpages * 8) / 1024) over (partition by 'x'order by relpages desc) running_total_size_mb
FROM pg_class c
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)

编辑:让我说清楚。我知道 pg_class 不包含具有 .1、.2 等扩展名的文件的条目。我指的是没有文件扩展名的文件(例如,上面提到的文件名 103154174)。

最佳答案

.1.2 ...结尾的文件不会出现在pg_class中。 pg_class 只列出每个关系一次,但如果超过 1 GB,每个关系可以包含多个文件

Quote from the manual

When a table or index exceeds 1 GB, it is divided into gigabyte-sized segments. The first segment's file name is the same as the filenode; subsequent segments are named filenode.1, filenode.2, etc.

pg_relation_filepath() 将仅报告“基本文件”,而不是其他段。

关于postgresql - 如何找到特定操作系统数据文件关联的 postgres 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44553358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com