Re: COPY and indices?

From: Merlin Moncure <mmoncure(at)gmail(dot)com>
To: François Beausoleil <francois(at)teksol(dot)info>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: COPY and indices?
Date: 2012-03-13 14:48:43
Message-ID: CAHyXU0xyryDRXrF8tfAkUhdi0g-3z1aSJY14yP+wJJotnMqenQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

2012/3/12 François Beausoleil <francois(at)teksol(dot)info>:
> Hi all,
>
> When using COPY FROM STDIN to stream thousands of rows (20k and more hourly), what happens with indices? Are they updated only once after the operation, or are they updated once per row? Note that I'm not replacing the table's data: I'm appending to what's already there. I suspect batching writes will be faster than writing each individual row using an INSERT statement.
>
> Currently, I can sustain 30-40 writes per second on a Rackspace VPS. I know it's not the ideal solution, but that's what I'm working with. Following vmstat, the server is spending 30 to 40% of it's time in iowait. I don't have measurements as to what files are touched, and I'd welcome suggestions to measure the time PostgreSQL actually spends writing indices vs data.

you're almost certainly blocking on fsync. A real quick'n'dirty way
to confirm this (although it wont be as fast as COPY) would be to wrap
your inserts in a transaction. VMs tend to have really horrible
storage latency which can hurt postgres performance. Another option
would be to relax your commit policy (for example by flipping
synchronous_commit) if that fits within your safety requirements.

merlin

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message François Beausoleil 2012-03-13 14:57:06 Re: COPY and indices?
Previous Message Adrian Klaver 2012-03-13 13:16:38 Re: How to find compiled-in default port number?