\COPY command and indexes in tables

Started by Matthias Apitzover 5 years ago4 messagesgeneral
Jump to latest
#1Matthias Apitz
guru@unixarea.de

Hello,

We load large tables in some customer installation (some millions of rows)
from file with:

TRUNCATE TABLE tableName ;
\COPY tableName FROM 'fileName' WITH ( DELIMITER '|' )

and got to know that the loading nearly stops (without any real CPU
consumption) in the middle. The wild guess is that we forgot to DROP the indexes on
the tables. The doc https://www.postgresql.org/docs/13/sql-copy.html
does not give any hints related indexes.

There seems to be even tools available which address this issue on the
flight, like https://www.californiacivicdata.org/2018/01/25/index-drop-and-copy/

Any comments on this?

matthias

--
Matthias Apitz, ✉ guru@unixarea.de, http://www.unixarea.de/ +49-176-38902045
Public GnuPG key: http://www.unixarea.de/key.pub
Без книги нет знания, без знания нет коммунизма (Влaдимир Ильич Ленин)
Without books no knowledge - without knowledge no communism (Vladimir Ilyich Lenin)
Sin libros no hay saber - sin saber no hay comunismo. (Vladimir Ilich Lenin)

#2Laurenz Albe
laurenz.albe@cybertec.at
In reply to: Matthias Apitz (#1)
Re: \COPY command and indexes in tables

On Thu, 2020-11-19 at 08:38 +0100, Matthias Apitz wrote:

We load large tables in some customer installation (some millions of rows)
from file with:

TRUNCATE TABLE tableName ;
\COPY tableName FROM 'fileName' WITH ( DELIMITER '|' )

and got to know that the loading nearly stops (without any real CPU
consumption) in the middle. The wild guess is that we forgot to DROP the indexes on
the tables.

If it does not consume CPU, it must be stalled somehow.

Are there any wait events in "pg_stat_activity".

Yours,
Laurenz Albe
--
Cybertec | https://www.cybertec-postgresql.com

#3Jayadevan M
maymala.jayadevan@gmail.com
In reply to: Matthias Apitz (#1)
Re: \COPY command and indexes in tables

We load large tables in some customer installation (some millions of rows)
from file with:

TRUNCATE TABLE tableName ;
\COPY tableName FROM 'fileName' WITH ( DELIMITER '|' )

May be you could also make sure that loading actually stopped, by checking
the size of the data directory. In another session, you could try
watch du -h -s <datadirectory>

Regards,
Jayadevan

#4Paul Förster
paul.foerster@gmail.com
In reply to: Jayadevan M (#3)
Re: \COPY command and indexes in tables

Hi Jayadevan,

On 19. Nov, 2020, at 11:07, Jayadevan M <maymala.jayadevan@gmail.com> wrote:

May be you could also make sure that loading actually stopped, by checking the size of the data directory. In another session, you could try
watch du -h -s <datadirectory>

that might be misleading if you have the pg_wal directory inside PGDATA.

Cheers,
Paul