Patch to improve commit time performance and a few other things

From: Barry Lind <barry(at)xythos(dot)com>
To: "pgsql-patches(at)postgresql(dot)org" <pgsql-patches(at)postgresql(dot)org>
Cc: pgsql-jdbc(at)postgresql(dot)org
Subject: Patch to improve commit time performance and a few other things
Date: 2001-08-02 04:07:36
Message-ID: 3B68D208.6060701@xythos.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc pgsql-patches

Attached is a patch that does the following:

1) improves performance of commit/rollback by reducing number of round
trips to the server
2) uses 7.1 functionality for setting the transaction isolation level
3) backs out a patch from 11 days ago because that code failed to
compile under jdk1.1

Details:

1) The old code was doing the following for each commit:
commit
begin
set transaction isolation level xxx
thus a call to commit was performing three round trips to the database.
The new code does this in one round trip as:
commit; begin; set transaction isolation level xxx

In a simple test program that performs 1000 transactions (where each
transaction does one simple select inside that transaction) has the
following before and after timings:

Client and Server on same machine
old new
--- ---
1.877sec 1.405sec 25.1% improvement

Client and Server on different machines
old new
--- ---
4.184sec 2.927sec 34.3% improvement

(all timings are an average of four different runs)

2) The driver was using 'set transaction isolation level xxx' at the
begining of each transaction, instead of using the new 7.1 syntax of
'set session characteristics as transaction isolation level xxx' which
only needs to be done once instead of for each transaction. This is
done conditionally (i.e. if server is 7.0 or older do the old behaviour,
else do the new behaviour) to not break backward compatibility. This
also required the movement of some code to check/test database version
numbers from the DatabaseMetaData object to the Connection object.

3) Finally while testing, I discovered that the code that was checked in
11 days ago actually didn't compile. The code in the patch for
Connection.setCatalog() used Properties.setProperty() which only exists
in JDK1.2 or higher. Thus compiling the JDBC1 driver failed as this
method doesn't exist. Thus I backed out that patch.

thanks,
--Barry

Attachment Content-Type Size
patch.txt text/plain 19.6 KB

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message Bruce Momjian 2001-08-02 04:17:10 Re: Re: What needs to be done?
Previous Message Dave Cramer 2001-08-02 03:15:58 RE: Re: What needs to be done?

Browse pgsql-patches by date

  From Date Subject
Next Message Tom Lane 2001-08-02 04:18:19 Re: Revised Patch to allow multiple table locks in "Unison"
Previous Message Paul Ramsey 2001-08-02 03:56:04 Re: contrib/postgis