Ada*_*tan 5 postgresql database-size size
我有一个非常大的表,带有 blob 字段,称为data
. 我试图弄清楚为什么它没有被很好地缓存并且重复的SELECT
s 很慢:
=> SELECT pg_size_pretty(pg_total_relation_size('data'));
157 GB
Run Code Online (Sandbox Code Playgroud)
这看起来有点大,所以我试着总结一下数据:
=> SELECT pg_size_pretty(pg_relation_size('data'));
19 GB
Run Code Online (Sandbox Code Playgroud)
随着指数:
SELECT pg_size_pretty(pg_relation_size('data_pkey'));
757 MB
SELECT pg_size_pretty(pg_relation_size('data_file_end_date_idx'));
766 MB
SELECT pg_size_pretty(pg_relation_size('data_file_end_date_idx'));
766 MB
SELECT pg_size_pretty(pg_relation_size('data_merged_idx'));
854 MB
SELECT pg_size_pretty(pg_relation_size('data_owner_idx'));
794 MB
SELECT pg_size_pretty(pg_relation_size('data_session_format_idx'));
779 MB
Run Code Online (Sandbox Code Playgroud)
数据和索引大小的总和约为 26 GB,但总关系大小接近 160 GB。该表刚刚从转储中恢复,此后没有进行任何写入。
小智 4
表格是否有可变宽度的列?如果答案是肯定的,那么您可能错过了 toast 表 (pg_toast_xxx)。你需要找到它们的名字(不知道如何做,需要谷歌搜索)并计算它们的大小。
要减少空间(例如删除一堆行后),请执行 VACUUM FULL 并在其后重新索引表(以防止索引碎片)。