[Java lista] postgres gyorsítás

CoL col at gear.hu
2009. Jan. 17., Szo, 10:37:20 CET


Szia,

chico at tisztanet.hu wrote:
> Sziasztok!
> 
> Nem pontosan Java téma, de hátha tudtok segíteni.
> 
> Azt szeretném kérdezni, hogy hogyan lehet meggyorsítani egy PostgreSQL
> betöltést Linux-on (CentOS).
> 
> Amit használok: psql "imp-db" < dump.sql
> 
> A "dump.sql"-ben insert into utasítások vannak, összesen 16 Millió (2
> GByte)
> 
> 1 nap alatt sem végzett, és néztem, hogy a processor terhelés 0.2%
> fölé soha se ment (a gép nem csinál mást).
> 
> Hogyan lehetne rávenni a gépet, hogy többet foglalkozzon ezzel a
> process-el és/vagy gyorsabban töltse be a dump-ot?
> (a postgres-nél a working_memory 512MByte)

először is, ha nem tudod a dump-odat copy-s parancsokra átcserélni, 
akkor legalább legyen egy begin;  az elején, hogy ne minden insert 
utasítás 1-1 külön tranzakcióba fusson. Ez olyan 20% körül gyorsít.

De a legjobb, ha COPY -val van a dump, nem insert-el.

A masik, hogy ez a művelet nem processzor, hanem IO kérdése. A proc 
ugyan mit csinálna, amikor nem számol semmit, csak file-ba írások 
történnek?:) Szóval ne proci terhelést nézz, hanem IO terhelést.

Ilyen betöltésekkor érdemes a pg loggolást is kikapcsolni ha netán van, 
akár a dump file elején.

Ha esetleg sok fk van, akkor azokat érdemes lehet (insert into-s dump 
esetén) lekapcsolni a dump idejére.

Valamint sokat segít, ha fsync is off, a betöltés idejére, ha 
garantálható, hogy nem fogja senki kihúzni a dugajból a gépet :)

Ezek az alap dolgok csa, és nyilván szituáció függő mit lehet, mit érdemes.

C.


További információk a(z) Javalist levelezőlistáról