[Monetdb-developers] JDBC/MonetDB performance test

Fabian Groffen Fabian.Groffen at cwi.nl
Fri Oct 14 23:43:33 CEST 2005

Inspired by a student's preliminary test program, I conducted a -- at 
first quite innocent -- experiment to see how 'fast' MonetDB is and it's 
upcoming major release; MonetDB/Five.

The conducted experiment mainly consists of inserting 8000, 19200 and 
152800 tuples into three tables respectively.  There are no constraints 
in use, as such it is quite 'dumb', but aggressive inserting.  This 
inserting of values was done in three different ways:
1) using plain INSERT INTO statements (DBTestI)
2) using INSERT INTO statements batched by the JDBC driver (DBTest) [1]
3) using PreparedStatements to insert the date (DBTestP)

I timed the wall-clock times of PostgreSQL 8.0.3 (PG8), MySQL 4.0.25 
with InnoDB (My4), MonetDB 4.8.2 (M4) and todays CVS version of 
MonetDB/Five (M5).  The JDBC drivers used for PostgreSQL and MySQL were 
the latest stable versions available, for MonetDB the released version 
and a progressive/experimental version were tested.  This is marked with 
an 's' for the stable released version and 'p' for the progressive version.
The databases run on a Dual Athlon MP 1600+ with 1GB of main-memory 
running Gentoo Linux with a 2.6.12 kernel (pegatoo).  Two series of 
tests were performed; a local and remote version.  In the local variant 
both the client application (with JDBC driver) and database server run 
on the same machine (as mentioned before).  In the remote variant the 
client is on a different machine that is hardware wise equal to the 
machine that runs the database (crux).  Both machines are directly 
connected to each other.

The results follow in the table below:

                  PG8       My4       M4s     M4p       M5s     M5p
    JDBC local
    - DBTestI     37s       27s       90s     86s       62s     60s
    - DBTest      19s       27s       60s     59s       46s     46s
    - DBTestP     14s       27s       63s     64s       59s     60s
    JDBC remote
    - DBTestI     49s       37s       84s     85s       62s     62s
    - DBTest      19s       37s       57s     58s       43s     43s
    - DBTestP     14s       37s       66s     62s       53s     53s
    JDBC remote [2]
    - DBTestI    197s      168s         >1201s            >1545s
    - DBTest      67s      168s       76s     77s       61s     63s
    - DBTestP     68s      168s       75s     77s       66s     70s

The results are somewhat 'confusing'.

[1] Note: the program was not called DBTestB because it was submitted by 
the students under this name.
[2] To simulate a slow link, we used an ssh tunnel to the database 
server as connection link, instead of a direct connection

More information about the developers-list mailing list