Prestazioni PostgreSQL 8.4 FreeBSD 8.2

ferz nonsolosoft a diff.org
Lun 29 Ago 2011 21:08:03 CEST


On 08/29/11 14:55, Massimo Lusetti wrote:
> 2011/8/29 Ferruccio Zamuner<nonsolosoft a diff.org>:
>
>> Ciao Massimo,
>>
>> per velocizzare le insert non concorrenti puoi:
>>
>> 1) disabilitare i constraint durante l'inserimento e riattivarli al termine
>> dell'inserimento (cosi' li verifica in un botto solo)
>
> Io lavoro con qualche decina di thread in inserimento...

Puoi farlo lo stesso.
Cmq c'e' una pagina che riassume tutti i trucchi:

http://www.postgresql.org/docs/8.4/static/populate.html

>
>> 2) aumentare la memoria temporana di lavoro
>
> ... provero`... consigli su come "calcolare i valori" ?

>
>> 3) aumentare la dimensione dei segmenti del log
>
> Lo stesso di cui sopra...

Se devi caricare ad esempio 1Gb scegli almeno 64 checkpoint_segments 
(16Mb ciascuno, quindi verifica di avere spazio disco per farlo)

>
>> Mi mostri il codice con cui fai le insert?
>
> Piu` che mostrarti il codice (ti dovrei mandare un sacco di file per
> farti capire) posso provare a descriverti il sistema:
>
> C'e` un Thread che polla una dir dove ci sono i file dei log, questo
> thread per ogni riga del file mette in una code di lavoro
> (ThreadPoolExecutor) degli Invokable/Runnable per eseguire il lavoro
> di parse e insert.

In effetti usare COPY in questi casi puo' risultare molto piu' 
efficiente che una serie INSERT.


Ciao,                \ferz


Maggiori informazioni sulla lista Esperti