Correction, pg_relation_size includes toast data.

On Thu, Jun 4, 2015 at 10:03 AM, Melvin Davidson <melvin6...@gmail.com>
wrote:

> I'm not sure why you are adding toast to table size, since
> pg_relation_size already does that.
>
> http://www.postgresql.org/docs/9.3/interactive/functions-admin.html
>
> This query might work better and faster for you.
>
> SELECT n.nspname as schema,
>              c.relname as table,
>              a.rolname as owner,
>              c.relfilenode as filename,
>              c.reltuples::integer,
>              pg_size_pretty(pg_relation_size( quote_ident( n.nspname ) ||
> '.' || quote_ident( c.relname ) )) as size,
>              pg_size_pretty(pg_total_relation_size( quote_ident( n.nspname
> ) || '.' || quote_ident( c.relname ) )) as total_size,
>              pg_relation_size( quote_ident( n.nspname ) || '.' ||
> quote_ident( c.relname ) ) as size_bytes,
>              pg_total_relation_size( quote_ident( n.nspname ) || '.' ||
> quote_ident( c.relname ) ) as total_size_bytes,
>             CASE WHEN c.reltablespace = 0
>                         THEN 'pg_default'
>                         ELSE (SELECT t.spcname
>                                      FROM pg_tablespace t WHERE (t.oid =
> c.reltablespace) )
>                          END as tablespace
>    FROM pg_class c
>       JOIN pg_namespace n ON (n.oid = c.relnamespace)
>      JOIN pg_authid a ON ( a.oid = c.relowner )
> WHERE c.relname = 'sensor'
>       AND n.nspname = 'devtest';
>
>
>
> On Thu, Jun 4, 2015 at 9:50 AM, Tom Lane <t...@sss.pgh.pa.us> wrote:
>
>> Hans Guijt <h...@terma.com> writes:
>> > I have a Postgres 9.3.7 database, freshly created on Ubuntu 14 LTS 64
>> bit, and at this time almost completely empty. I'm attempting to find the
>> size of a table, using the following code:
>> > SELECT
>> >   pg_relation_size (stat.relid),
>> >   CASE WHEN cl.reltoastrelid = 0 THEN
>> >   0
>> >   ELSE
>> >   pg_relation_size (cl.reltoastrelid) + COALESCE ((
>> >   SELECT SUM (pg_relation_size (indexrelid)) FROM pg_index WHERE
>> indrelid=cl.reltoastrelid
>> >   ), 0)::int8
>> > END,
>> > COALESCE ((SELECT SUM (pg_relation_size (indexrelid)) FROM pg_index
>> WHERE indrelid=stat.relid), 0)::int8
>> > FROM pg_stat_all_tables stat
>> > JOIN pg_class cl ON cl.oid=stat.relid
>> > JOIN pg_namespace ns ON cl.relnamespace=ns.oid
>> > WHERE UPPER (cl.relname) = UPPER ('sensor')
>> >    AND UPPER (ns.nspname) = UPPER ('devtest')
>>
>> Getting rid of the useless join to pg_stat_all_tables would probably help;
>> there's a lot of computation in that view.
>>
>>                         regards, tom lane
>>
>>
>> --
>> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-general
>>
>
>
>
> --
> *Melvin Davidson*
> I reserve the right to fantasize.  Whether or not you
> wish to share my fantasy is entirely up to you.
>



-- 
*Melvin Davidson*
I reserve the right to fantasize.  Whether or not you
wish to share my fantasy is entirely up to you.

Reply via email to