2017-05-23 71 views
0

我運行的PostgreSQL 9.4.6,我有一個數據庫,這是78GB運行爲什麼我的postgres數據庫如此之大?

SELECT pg_size_pretty(pg_database_size('<db name>')) As fulldbsize; 

爲了追查爲什麼我的數據庫是如此之大,我嘗試了以下發現: -

SELECT relname as "Table",  
     pg_size_pretty(pg_total_relation_size(relid)) As "Size", 
     pg_size_pretty(pg_total_relation_size(relid) - pg_relation_size(relid)) as "External Size" 
FROM pg_catalog.pg_statio_user_tables 
ORDER BY pg_total_relation_size(relid) DESC; 

但是,當加起來的表格,我得到約15GB。

什麼使用我的數據庫中的空間?我可以運行哪些進一步的命令?

+1

您的第二個查詢只考慮了表,但沒有索引。它不包括其他用戶擁有的表(和索引),Toast表和系統表(儘管系統表不太可能需要63GB) –

回答

1

你也可以得到所有對象以及它們各自的大小

SELECT 
relname AS objectname, 
relkind AS objecttype, 
reltuples AS "#entries", pg_size_pretty(relpages::bigint*8*1024) AS size 
FROM pg_class 
WHERE relpages >= 8 
ORDER BY relpages DESC; 

信息本應詳細說明:

  • 對象名 - 對象
  • OBJECTTYPE的名稱 - R的對錶, i爲索引,t爲烤麪包數據,...
  • 條目 - 對象中的條目數量(例如行)
  • 大小 - 對象
0

的大小這將列出所有對象的大小:

SELECT relname, pg_total_relation_size(oid) 
FROM pg_class 
ORDER BY 2 DESC; 

這將有助於您考慮數據庫大小。

相關問題