pg.ddx.io  pgsql-performance@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Alex Tokarev <dwalin@dwalin.ru>
To: pgsql-performance@postgresql.org
Subject: Table with large number of int columns, very slow COPY FROM
Date: Thu, 07 Dec 2017 20:21:45 -0800
Message-ID: <D64F5359.2993D%dwalin@dwalin.ru> (raw)

Hi,

I have a set of tables with fairly large number of columns, mostly int with
a few bigints and short char/varchar columns. I¹ve noticed that Postgres is
pretty slow at inserting data in such a table. I tried to tune every
possible setting: using unlogged tables, increased shared_buffers, etc; even
placed the db cluster on ramfs and turned fsync off. The results are pretty
much the same with the exception of using unlogged tables that improves
performance just a little bit.

I have made a minimally reproducible test case consisting of a table with
848 columns, inserting partial dataset of 100,000 rows with 240 columns. On
my dev VM the COPY FROM operation takes just shy of 3 seconds to complete,
which is entirely unexpected for such a small dataset.

Here¹s a tarball with test schema and data:
http://nohuhu.org/copy_perf.tar.bz2; it¹s 338k compressed but expands to
~50mb. Here¹s the result of profiling session with perf:
https://pastebin.com/pjv7JqxD


-- 
Regards,
Alex.

view thread (3+ messages)  latest in thread

Message-ID: <D64F5359.2993D%dwalin@dwalin.ru>
Permalink:  ../D64F5359.2993D%25dwalin@dwalin.ru/
Also on:    postgresql.org/message-id/D64F5359.2993D%dwalin@dwalin.ru

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-performance@postgresql.org
  Cc: dwalin@dwalin.ru
  Subject: Re: Table with large number of int columns, very slow COPY FROM
  In-Reply-To: <D64F5359.2993D%dwalin@dwalin.ru>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox