Re: very slow when writing query to file - Mailing list pgadmin-support

From boris pezzatti
Subject Re: very slow when writing query to file
Date
Msg-id 4EB0F81E.70708@wsl.ch
Whole thread Raw
In response to Re: very slow when writing query to file  (Guillaume Lelarge <guillaume@lelarge.info>)
Responses Re: very slow when writing query to file
Re: very slow when writing query to file
List pgadmin-support
Thank you Fernando for reproducing this.<br /> I suspect there must be some part of code in the <br /><pre wrap="">*
foreach row * for each column</pre> loops that result inefficient only on some machines or OS's (I'm using
Archlinux).<br/> In fact the extra time I and Fernando get can not only be attributed to adding commas, " and line
feeds.The same file which I retrived in more than one hour (32Mb), could be saved with openoffice in 10 seconds,
changingcolumn separators, text delimiters and encoding.<br /><br /> Could it be possible that the use of e.g. error
catchingin the loops results in poor performance on some systems? (I'm not a c++ programmer ...)<br /><br /><br /><br
/><br/><br /><br /><br /> On 11/01/2011 11:23 AM, Guillaume Lelarge wrote: <blockquote
cite="mid:1320142985.2122.13.camel@localhost.localdomain"type="cite"><pre wrap="">On Mon, 2011-10-31 at 18:26 -0300,
FernandoHevia wrote:
 
</pre><blockquote type="cite"><pre wrap="">[...]
I could reproduce the issue in a fresh Windows 7 install with no other apps
running other than pgAdmin v1.14.0.
From what I could see, the execute-to-file function runs in 2 stages:
1. Rows are retrieved from DB server to RAM
2. Rows are written from RAM to file

</pre></blockquote><pre wrap="">
That's right.

</pre><blockquote type="cite"><pre wrap="">The delay clearly occurs in step 2.
</pre></blockquote><pre wrap="">
That's also right.

</pre><blockquote type="cite"><pre wrap="">While with small datasets (<2000) the writing to disk delay is barely
perceivable, when the number of rows is incremented (>10k) it is quite
distinctive how step 1 keeps completing in the expected time frame but step
2 takes much much longer. In any case it should be the other way around.

</pre></blockquote><pre wrap="">
Nope, step 2 does a lot of work.

</pre><blockquote type="cite"><pre wrap="">With 10k rows (2.3 MB) it took 3.5 seconds to retrieve data from DB and 40
seconds to write the file to an SATA 7200 disk with write-through cache.
With 100k rows (23 MB) the DB retrieve went for 35 seconds while the file
writing part took over 4 minutes (didn't wait for it to finish).

</pre></blockquote><pre wrap="">
I don't have the same numbers:

*    1000 : 1s
*   10000 : 1s
*  200000 : 7s
* 1000000 : 18s

</pre><blockquote type="cite"><pre wrap="">The file is being written at an avg 60 KB per second, which is extremely
slow.
</pre></blockquote><pre wrap="">
If the only thing pgAdmin does was writing, I would agree. But,
actually, it does a lot more things:

* for each row * for each column   * adds the column separator, if needed   * grabs one cell's value   * quotes the
value,if needed (which also means doubling the quote     if it's within the value) * adds the line separator * converts
itto the encoding, if needed * writes it to the file
 

That could take some time.

I searched if there were some parts that took much longer than others,
but failed to find one.


</pre></blockquote><br /><div class="moz-signature">-- <br /></div><small><font face="Verdana"><small><b>Boris
Pezzatti<br/> Swiss Federal Research Institute WSL<br /></b></small></font></small><table border="0" cellpadding="2"
cellspacing="2"style="text-align: left; width: 400px;"><tbody><tr><td style="vertical-align: top;"><small><font
face="Verdana"><small>Researchunit Community Ecology<br /> Team Insubric Ecosystems<br /> via Belsoggiorno 22<br />
CH-6500Bellinzona <br /> Switzerland</small></font></small></td><td style="vertical-align: top; text-align:
right;"><small><fontface="Verdana"><small> phone direct ++41 91 821 52 32<br /></small></font><font
face="Verdana"><small>phone</small></font><font face="Verdana"><small>++41 91 821 52 30<br /> fax ++41 91 821 52 39<br
/><aclass="moz-txt-link-abbreviated" href="mailto:boris.pezzatti@wsl.ch">boris.pezzatti@wsl.ch</a><br /><a
eudora="autourl"href="http://www.wsl.ch/">http://www.wsl.ch</a></small></font></small></td></tr></tbody></table><br /> 

pgadmin-support by date:

Previous
From: Guillaume Lelarge
Date:
Subject: Re: Improve user experience on dropping and re-creating objects
Next
From: boris pezzatti
Date:
Subject: Re: very slow when writing query to file