RES: Performance on Bulk Insert to Partitioned Table

Поиск
Список
Период
Сортировка
От Luciano Ernesto da Silva
Тема RES: Performance on Bulk Insert to Partitioned Table
Дата
Msg-id 87C8AADF9E20C14C811B0AFA1747DA54036928FB@filipides
обсуждение исходный текст
Ответ на Re: Performance on Bulk Insert to Partitioned Table  (Jeff Janes <jeff.janes@gmail.com>)
Ответы Re: Performance on Bulk Insert to Partitioned Table  (Pavel Stehule <pavel.stehule@gmail.com>)
Список pgsql-performance

UNSUBSCRIBE

 

De: pgsql-performance-owner@postgresql.org [mailto:pgsql-performance-owner@postgresql.org] Em nome de Jeff Janes
Enviada em: sexta-feira, 28 de dezembro de 2012 14:31
Para: Scott Marlowe
Cc: Tom Lane; Charles Gomes; Ondrej Ivanič; pgsql-performance@postgresql.org
Assunto: Re: [PERFORM] Performance on Bulk Insert to Partitioned Table

 



On Thursday, December 20, 2012, Scott Marlowe wrote:


3: Someone above mentioned rules being faster than triggers. In my
experience they're WAY slower than triggers but maybe that was just on
the older pg versions (8.3 and lower) we were doing this on. I'd be
interested in seeing some benchmarks if rules have gotten faster or I
was just doing it wrong.

 

It apparently depends on how you use them.

 

To load 1e6 rows into the parent, redistributing to 100 partitions (rows evenly distributed over partitions) using RULEs, it took 14.5 seconds using a "insert into foo select * from foo_tmp" (not counting the time it took to prepopulate the foo_tmp via \copy).

 

This is about 25% faster than the 18.4 seconds it took to load the same data via \copy using a plpgsql trigger which was structured with nested IF ... ELSE...END IF that do a binary search over the partitions.

However if I didn't use \copy or "insert into...select", but rather used a Perl loop invoking normal single-row inserts (but all in a single transaction) with DBD::Pg, then the RULEs took 596 seconds, an astonishing seven times slower than the 83 seconds it took the previously mentioned plpgsql trigger to do the same thing.

 

This was under 9.1.7.

 

In 9.2.2, it seems to get 3 times worse yet for RULEs in the insert loop. But that result seems hard to believe, so I am repeating it.

 

Cheers

 

Jeff

 

В списке pgsql-performance по дате отправления:

Предыдущее
От: Jeff Janes
Дата:
Сообщение: Re: Performance on Bulk Insert to Partitioned Table
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: Performance on Bulk Insert to Partitioned Table