Обсуждение: [GENERAL] Determine size of table before it's committed?

Поиск
Список
Период
Сортировка

[GENERAL] Determine size of table before it's committed?

От
Seamus Abshere
Дата:
hi,

I've had an `INSERT INTO x SELECT FROM [...]` query running for more
then 2 days.

Is there a way to see how big x has gotten? Even a very rough estimate
(off by a gigabyte) would be fine.

Best,
Seamus


--
Seamus Abshere, SCEA
https://www.faraday.io
https://github.com/seamusabshere
https://linkedin.com/in/seamusabshere


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Re: [GENERAL] Determine size of table before it's committed?

От
Justin Pryzby
Дата:
On Wed, Oct 11, 2017 at 10:43:26AM -0300, Seamus Abshere wrote:
> I've had an `INSERT INTO x SELECT FROM [...]` query running for more
> then 2 days.
> 
> Is there a way to see how big x has gotten? Even a very rough estimate
> (off by a gigabyte) would be fine.

On linux:

Run ps -fu postgres (or SELECT pid, query FROM pg_stat_activity) and
look at: ls -l /proc/PID/fd

writing to XXXXXX.22 means it's written ~22GB.

You can also SELECT relfilenode FROM pg_class WHERE oid='x'::regclass (or
relname='x').

Or try using strace (but beware I've seen its interruption to syscalls change
the behavior of the program being straced).

Justin


-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Re: [GENERAL] Determine size of table before it's committed?

От
Melvin Davidson
Дата:

On Wed, Oct 11, 2017 at 9:43 AM, Seamus Abshere <seamus@abshere.net> wrote:
hi,

I've had an `INSERT INTO x SELECT FROM [...]` query running for more
then 2 days.

Is there a way to see how big x has gotten? Even a very rough estimate
(off by a gigabyte) would be fine.

Best,
Seamus


--
Seamus Abshere, SCEA
https://www.faraday.io
https://github.com/seamusabshere
https://linkedin.com/in/seamusabshere


--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

>Is there a way to see how big x has gotten?...

Try:

SELECT n.nspname as schema,
       c.relname as table,
       a.rolname as owner,
       c.relfilenode as filename,
       c.reltuples::bigint,
       pg_size_pretty(pg_relation_size(n.nspname|| '.' || c.relname)) as size,
       pg_size_pretty(pg_total_relation_size(n.nspname|| '.' || c.relname)) as total_size,
       pg_relation_size(n.nspname|| '.' || c.relname) as size_bytes,
       pg_total_relation_size(n.nspname|| '.' || 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 relname = 'x'
ORDER BY total_size_bytes DESC, 1, 2;

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