Обсуждение: postgres 8 performance
Hi all!
I am running postgres 8 beta1 and for some reason it is really slow in
execution. I am not able to figure out why.
On a fresh install of postgres, the following code executed through jdbc
********************
for (int i=0; i < 10000; i++) {
s.execute("insert into tab values (" + i + ",'" + i +
"')") ;
}
****************
This took like 700 secs to execute.
However, the weird part is that a stored proc doing the same thing via
******************************
create or replace function perftest() returns integer as '
declare
i integer := 0 ;
begin
for i in 0..10000 loop
execute ''insert into tab values ( '' || i || '' ,''''xxx''''
)'' ;
end loop ;
return 0;
end ;
does the same thing in less than a second.
*************************************
I can't figure out what the problem is.
The app using jdbc and the postmaster instance were running on the same
comp so I can't believe that communication would make that big a hit on
performance.
Is there something else that I am doing wrong?
Finally, where can I look up some useful performance tuning tips to get my
server to run faster anyway?
thanks a lot
paramveer singh
Add a begin/commit on that so you dont have 10k transactions ?
BEGIN
> ********************
> for (int i=0; i < 10000; i++) {
> s.execute("insert into tab values (" + i + ",'" + i +
> "')") ;
> }
> ****************
COMMIT
> I can't figure out what the problem is. > The app using jdbc and the postmaster instance were running on the same > comp so I can't believe that communication would make that big a hit on > performance. It's the query parsing that takes a lot of time. You might want to look at prepared statements: http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html Also set autocommit to off and do a hundert or so inserts inside one transaction, not one transaction for each insert. Bye, Chris.
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hi, On Tue, 7 Sep 2004 Paramveer.Singh@trilogy.com wrote: <snip> > Finally, where can I look up some useful performance tuning tips to get my > server to run faster anyway? * http://www.varlena.com/varlena/GeneralBits/Tidbits/annotated_conf_e.html * http://www.varlena.com/varlena/GeneralBits/Tidbits/perf.html * Join pgsql-perform list. Regards, - -- Devrim GUNDUZ devrim~gunduz.org devrim.gunduz~linux.org.tr http://www.tdmsoft.com http://www.gunduz.org -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.1 (GNU/Linux) iD8DBQFBPY4ctl86P3SPfQ4RAuSaAJ0daOhwnIUVjwR1qmQu9GBeFTCB5wCfZdN/ xlW//4jr8EOIhZil1qyGYSY= =QlCi -----END PGP SIGNATURE-----
On 07/09/2004 11:12 Paramveer.Singh@trilogy.com wrote: > Hi all! > I am running postgres 8 beta1 and for some reason it is really slow in > execution. I am not able to figure out why. > On a fresh install of postgres, the following code executed through jdbc > > [snip] > I can't figure out what the problem is. > The app using jdbc and the postmaster instance were running on the same > comp so I can't believe that communication would make that big a hit on > performance. Each of your JDBC inserts is being performed in a different transaction whilst your stored procedure is being executed is a single transaction. If you want to speed up the JDBC inserts, use setAutoCommit(false) on the connection object then do a connection.commit() at the end. If you really are taking 700 seconds, you've probably also got a network misconfiguration somewhere as well. 50-100 seconds would be more realistic even on fairly slow hardware. -- Paul Thomas +------------------------------+-------------------------------------------+ | Thomas Micro Systems Limited | Software Solutions for Business | | Computer Consultants | http://www.thomas-micro-systems-ltd.co.uk | +------------------------------+-------------------------------------------+