Postgresql 如何找到特定OS数据文件与哪个postgres表关联?
我有一个postgres 9.3数据库,对pg_类的查询报告表空间使用的总空间为568G,服务器上的相应文件报告为685G 难道所有的文件库都不应该出现在pgu类中,或者我遗漏了什么吗。例如,在“.7”中有名为“103154174”、“103154174.1”等的文件。103154174不出现在pg_类中。(FWIW,该文件的时间戳为今年6月5日) 我错过什么了吗?当我从pg_类中选择pg_relationship_filepath(c.oid)时,该文件不应该出现在我正在使用的数据库的目录中吗?或者它可以是包含不同名称文件的不同表的一部分吗 以下是我用来识别服务器文件的查询:Postgresql 如何找到特定OS数据文件与哪个postgres表关联?,postgresql,Postgresql,我有一个postgres 9.3数据库,对pg_类的查询报告表空间使用的总空间为568G,服务器上的相应文件报告为685G 难道所有的文件库都不应该出现在pgu类中,或者我遗漏了什么吗。例如,在“.7”中有名为“103154174”、“103154174.1”等的文件。103154174不出现在pg_类中。(FWIW,该文件的时间戳为今年6月5日) 我错过什么了吗?当我从pg_类中选择pg_relationship_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_类不包含扩展名为.1、.2等的文件的条目。我指的是没有文件扩展名的文件(例如,上面提到的文件名103154174) 文件以
.1
,.2
结尾。。。不会在pg_课上出现。pg_类只列出每个关系一次,但如果每个关系超过1 GB,则可以由多个文件组成
当一个表或索引超过1GB时,它被划分为GB大小的段。第一段的文件名与filenode相同;随后的段被命名为filenode.1、filenode.2等
pg\u relationship\u filepath()
将只报告“基本文件”,而不报告附加的段。over(按“x”分区)
可以替换为over()
和over(按“x”按relpages desc排序)
可能应该是over(按c.oid排序)
我问的文件名为“103154174”(即,没有.extenders)。它在服务器上,但据我所知,在数据库中找不到。