goudvis <paul.stapersma@gmail.com> wrote:
> The report is based on a java application that can be found here:
> http://dl.dropbox.com/u/19316575/dbtp.zip. This zip-file also
> includes an SQL file that creates the used tables and the queries
> that are executed.
>
> I put a README-file in the zip with installation instructions.
> Most easy to do the tests: extract the zip, download and install
> eclipse, create a project based on a folder where the extracted
> dbtp.zip should be referenced and follow the instructions in the
> README-file.
Thank you very much! I will review and attempt to replicate your
results.
> I'll try redo the tests with the newest version of Postgres myself
> as soon as I have the time.
I've read through the paper more closely now, and recommend that you
review the concurrency control section of the PostgreSQL docs to
better understand some of the timings you found surprising.
http://www.postgresql.org/docs/9.1/interactive/mvcc.html
Basically, you seemed to be assuming that concurrency control is
handled through 2 Phase Locking (2PL) with Strict 2 Phase Locking
(S2PL) used for serializable transaction isolation. This is not at
all true in PostgreSQL, and as I understand it InnoDB uses S2PL at
the serializable transaction isolation level, and (like PostgreSQL)
MVCC at other levels. This would account for much worse performance
at the InnoDB serializable level than other levels. It would also
explain why repeatable read is generally faster than read committed
-- it only needs to build one snapshot per transaction, not one per
statement.
To understand the new implementation of serializable isolation in
PostgreSQL version 9.1, you might want to read the Wiki page which
was used to manage development of the feature.
http://wiki.postgresql.org/wiki/Serializable
The Cahill doctoral thesis is very much worth reading, and many of
the papers referenced by it are also excellent.
http://hdl.handle.net/2123/5353
Thanks again. I hope to get back to you within a few days.
-Kevin