From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Hans Guijt <hg(at)terma(dot)com> |
Cc: | "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: pg_relation_size performance issue |
Date: | 2015-06-04 13:50:55 |
Message-ID: | 30361.1433425855@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Hans Guijt <hg(at)terma(dot)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
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2015-06-04 13:56:18 | Re: Row visibility issue with consecutive triggers, one being DEFERRED |
Previous Message | Robert Haas | 2015-06-04 13:42:22 | Re: [GENERAL] 9.4.1 -> 9.4.2 problem: could not access status of transaction 1 |