From: | "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at> |
---|---|
To: | "Eric McKeeth *EXTERN*" <eldin00(at)gmail(dot)com>, "Andreas Kretschmer" <akretschmer(at)spamfence(dot)net> |
Cc: | <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: What's eating my space ? |
Date: | 2011-05-20 08:19:04 |
Message-ID: | D960CB61B694CF459DCFB4B0128514C20670D03F@exadv11.host.magwien.gv.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Eric McKeeth wrote:
>>> I wander what is taking up my space on disk ...
>>>
>>> btv=# SELECT pg_size_pretty(pg_database_size('btv_good'));
>>> pg_size_pretty
>>> ----------------
>>> 10 GB
>>> (1 row)
[SELECT total size of all non-system tables]
>>> The sum of biggest tables is not even close to the total db size .
>>> Some index going wild ?
>>
>> Your sum doesn't contains indexes and toast-tables.
>>
> Since he used pg_total_relation_size(), according to the manual
>
(http://www.postgresql.org/docs/current/interactive/functions-admin.html
) indexes and toast should be
> included in the numbers reported for the tables. Unfortunately, I
don't have any insight as to why
> pg_database_size() is returning a number roughly 5x larger than the
sum of pg_total_relation_size()
> here.
Maybe it's the system tables.
Try running the following query:
SELECT SUM(pg_total_relation_size(C.oid)) AS "total_size",
(N.nspname IN ('pg_catalog', 'information_schema')) AS
"system_object"
FROM pg_class C
JOIN pg_namespace N ON (N.oid = C.relnamespace)
LEFT OUTER JOIN pg_tablespace T ON (C.reltablespace = T.oid)
WHERE C.relkind <> 'i'
AND nspname !~ '^pg_toast'
AND COALESCE(T.spcname, 'default') != 'pg_global'
GROUP BY nspname IN ('pg_catalog', 'information_schema');
which will give you a sum of the sizes of all tables and their
appendixes,
grouped by system and non-system tables. I exclude global tables.
On my 8.4 test database I get:
total_size | system_object
------------+---------------
376832 | f
5505024 | t
(2 rows)
For
SELECT pg_database_size(current_database())
I get:
pg_database_size
------------------
5972260
(1 row)
which comes pretty close.
Yours,
Laurenz Albe
From | Date | Subject | |
---|---|---|---|
Next Message | Albe Laurenz | 2011-05-20 08:25:55 | Re: Password issue |
Previous Message | Craig Ringer | 2011-05-20 08:01:59 | Re: Memcached for Database server |