Re: Slow query execution over WAN network - Mailing list pgsql-jdbc

From Clemens Eisserer
Subject Re: Slow query execution over WAN network
Date
Msg-id AANLkTinqXN=3ukU5sUUnA3OHptQsm7jep24zNAs5rSCK@mail.gmail.com
Whole thread Raw
In response to Re: Slow query execution over WAN network  (Radosław Smogura <rsmogura@softperience.eu>)
Responses Re: Slow query execution over WAN network  (Clemens Eisserer <linuxhippy@gmail.com>)
Re: Slow query execution over WAN network  (Radosław Smogura <rsmogura@softperience.eu>)
List pgsql-jdbc
Hi,

I tried to analyze it further, this time the query executed over UMTS
- where it took 2000ms. (ping tp server 130ms, about 2mbit/s down):
http://93.190.88.182/wireshark_umts.tcpdump

0-490ms: Some TCP magic going on (tcp segment of a reassembled PDU??)
491 ms - Postgres query is sent
680ms - 1472ms - TCP ACKs
1642ms - Postgres - parse/bind completition
1873ms - Postgres - Row description
1893ms - First data Row
Row / ACK
2053ms - Last data Row

What makes me wonder is:
- Why does it take 500ms until the query is sent, what is that tcp
stuff happening before
- It seems until 1472ms the server is sending ACKs for the query
request, so does it take ~1000ms for the server to receive the query?
So is the query-upload the problem?
- Actual Row-Data transmission only takes 150ms.

If its indeed the query-data upload, are there any options to compress
the stream between the jdbc-driver and postgres-server?

Thanks, Clemens


> You truncated times in profiler window. May I ask what time was measured for
> socket.read(), and what kind of connection did you used for this (dsl, umts),
> connection speed and min/max/avg ping time to database server?

Sorry, I've deleted the profile - but about 70% were spent in socket.read().
Ping to the db-server was about ~30ms, it was a 8mbit ADSL line with
1M upstream.
Looking at the profile it seems reading back the data (~25kb/request)
is the problem.

> What other operations are performed inside benchamrkQuery(), commit/rollback,
> connection open?

Nothing, its just a:
> ResultSet rs = st.executeQuery(query);
> while (rs.next());

> Did fetch size wa,s when you was making this test, enaught to get all records
> at once?
Yes, I tried setting it higher a bit but nothing changed.
However the query only returned 12 rows - so I guess it should be
covered by default fetch size.

Thanks, Clemens

pgsql-jdbc by date:

Previous
From: jerome.moliere@gmail.com
Date:
Subject: Re: difference on execution time between prepared statement in pgAdminand through JDBC Stack
Next
From: Clemens Eisserer
Date:
Subject: Re: Slow query execution over WAN network