2013-02-01 14 views
2

我用下面的代碼來確定每個表的磁盤大小在我的數據庫PostgreSQL中:確定的PostgreSQL表的實際文件名的文件系統級別

SELECT pg_size_pretty(pg_total_relation_size('"my_schema"."my_table"')); 

我想,我應該找每個表的實際文件名以獲得確切的磁盤大小。有人知道如何確定文件系統級別的實際文件名嗎?

回答

2

事情是這樣的:

select t.relname, current_setting('data_directory')||'/'||pg_relation_filepath(t.oid) 
from pg_class t 
    join pg_namespace ns on ns.oid = t.relnamespace 
where relkind = 'r' 
and ns.nspname = 'public'; 

我不是100%,這將顯示正確的路徑,如果多個表都有涉及。

+0

這將識別關係主叉的第一部分。它不會包含其他分支(如可見性圖),TOAST數據或索引 - 只是第一個堆文件。當該文件達到1MB時,將使用「.1」,「.2」等後綴創建其他文件。 – kgrittn

+0

@kgrittn我擁有450MB大小的文件。你確定Postgres每1 ** MB **創建一個新文件嗎? –

+0

糟糕。當我這樣做時,我討厭它。這確實是每段1 ** GB **。但是,這一觀點認爲,爲了評估表格的大小,我們需要考慮的不僅僅是這個答案所指出的一個文件。 – kgrittn

相關問題