pg_restore fails when psql succeeds

2020-12-12 Thread Cherio
I am facing a consistent issue with pg_restore when moving databases with
large tables from PostgreSQL 10 to 13. pg_restore fails to restore indexes
on some large tables (anything over 20 million records).

pg_restore: error: could not execute query: ERROR:  out of memory
DETAIL:  Failed on request of size 214728704 in memory context "TupleSort
sort".
CONTEXT:  parallel worker
Command was: CREATE INDEX some_index_idx ON schema1.table1 USING btree
(some_field);

This happens when a database is exported with formats "custom" or
"directory". No errors occur when the same databases are exported as plain
text and imported with psql.

Initially I was importing with --jobs in several threads, but reducing
threads to 1 made no difference. I tried exporting with pg_dump versions 13
and 10. It made no difference either - restore succeeds with plain text +
psql and fails with the other formats + pg_restore.

The same doesn't happen when I import from 10 into 12. I am a bit lost and
concerned at this point about moving on with conversion to version 13.

Any guidance would be greatly appreciated!


Re: pg_restore fails when psql succeeds

2020-12-12 Thread Cherio
I install PostgreSQL from "apt.postgresql.org" repository:
$ /usr/lib/postgresql/13/bin/postgres --version
postgres (PostgreSQL) 13.1 (Ubuntu 13.1-1.pgdg20.04+1)

It runs in a VM, the most recent & updated version of Ubuntu LTS 20.04
$ uname -a
Linux dbwfprod8-20 5.4.0-56-generic #62-Ubuntu SMP Mon Nov 23 19:20:19 UTC
2020 x86_64 x86_64 x86_64 GNU/Linux
RAM: 48GB
CPU: 8
Storage: 800GB (plenty of free space left)

I attached customizations to postgresql.conf and a few relevant errors from
the PostgreSQL server log; there were no relevant messages in journalctl.





On Sat, Dec 12, 2020 at 3:18 PM Adrian Klaver 
wrote:

> On 12/12/20 12:10 PM, Cherio wrote:
> > I am facing a consistent issue with pg_restore when moving databases
> > with large tables from PostgreSQL 10 to 13. pg_restore fails to restore
> > indexes on some large tables (anything over 20 million records).
> >
> > pg_restore: error: could not execute query: ERROR:  out of memory
> > DETAIL:  Failed on request of size 214728704 in memory context
> > "TupleSort sort".
> > CONTEXT:  parallel worker
> > Command was: CREATE INDEX some_index_idx ON schema1.table1 USING btree
> > (some_field);
> >
> > This happens when a database is exported with formats "custom" or
> > "directory". No errors occur when the same databases are exported as
> > plain text and imported with psql.
> >
> > Initially I was importing with --jobs in several threads, but reducing
> > threads to 1 made no difference. I tried exporting with pg_dump versions
> > 13 and 10. It made no difference either - restore succeeds with plain
> > text + psql and fails with the other formats + pg_restore.
> >
> > The same doesn't happen when I import from 10 into 12. I am a bit lost
> > and concerned at this point about moving on with conversion to version
> 13.
> >
> > Any guidance would be greatly appreciated!
>
> Exact Postgres 13 version?
>
> Hardware specifications for machine?
>
> Changes in this
> section(https://www.postgresql.org/docs/13/runtime-config-resource.html)
> of postgresql.conf?
>
> Relevant information from system logs?
>
>
> --
> Adrian Klaver
> adrian.kla...@aklaver.com
>


var-log-postgresql-postgresql-13-main.log
Description: Binary data


postgresql-44G.conf
Description: Binary data


Re: pg_restore fails when psql succeeds

2020-12-13 Thread Cherio
The exact command is nothing fancy really. The complete exact command is
below

export PGPASSWORD=xxx
pg_restore --verbose --no-password --clean --if-exists -h 111.111.111.111
-p 5432 -U user -d blankdbfromstandardtemplate0 /PATH/EXPORTEDDIR 2>&1 |
tee logfile

I was able to import with pg_restore eventually after I disabled huge_pages
on the OS level. Huge pages were initially configured exactly as suggested
here:
https://www.postgresql.org/docs/13/kernel-resources.html#LINUX-HUGE-PAGES.
This is a dedicated postgres DB server machine but I always verify memory
settings to leave a little wiggle room; postgresqltuner.pl report was clear.


On Sun, Dec 13, 2020 at 1:00 PM Adrian Klaver 
wrote:

> On 12/12/20 12:39 PM, Cherio wrote:
> > I install PostgreSQL from "apt.postgresql.org
> > <http://apt.postgresql.org>" repository:
> > $ /usr/lib/postgresql/13/bin/postgres --version
> > postgres (PostgreSQL) 13.1 (Ubuntu 13.1-1.pgdg20.04+1)
> >
> > It runs in a VM, the most recent & updated version of Ubuntu LTS 20.04
> > $ uname -a
> > Linux dbwfprod8-20 5.4.0-56-generic #62-Ubuntu SMP Mon Nov 23 19:20:19
> > UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
> > RAM: 48GB
> > CPU: 8
> > Storage: 800GB (plenty of free space left)
> >
> > I attached customizations to postgresql.conf and a few relevant errors
> > from the PostgreSQL server log; there were no relevant messages in
> > journalctl.
> >
> >
>
> What is the exact command you are using to do the restore?
>
>
> --
> Adrian Klaver
> adrian.kla...@aklaver.com
>


Re: count(*) vs count(id)

2021-02-02 Thread Cherio
I just ran a few practical tests on large (~14mil rows) tables that have
multiple indexes.

SELECT COUNT(id) forces PostgreSQL to use the primary key index.
SELECT COUNT(*) allows PostgreSQL to chose an index to use and it seems to
be choosing one of smaller size which leads to less IO and hence returns
the result faster.


On Tue, Feb 2, 2021 at 3:45 PM Hellmuth Vargas  wrote:

>
>