Hi,
I have recently tried doing some experiments with MonetDB, measuring
its performance for the following dataset+workload:
* 1 table (50 attributes), 1GB, comprising 3.000.000 tuples
* the attributes are fixed length strings and integer types
* the workload is query (SELECT) only, where each query has the form:
SELECT FROM MyTable WHERE ;
* the list of predicates is a conjunction of equality operators
* more than 99% of the queries predicate on the same attribute (let's
call it A1) that has a *very* good selectivity
* the average number of predicated attributes per query is 8
* for this workload, averaging over 4000 queries, there is 1 result
tuple per query (actual result tuples per query are in the range 0-10)
I have installed MonetDB on a 64-bit Debian machines, using the .deb
files provided on the internet:
* libmonetdb1_1.38.5-20100824_amd64.deb
* libmonetdb5-server5_5.20.5-20100824_amd64.deb
* libmonetdb5-sql2_2.38.5-20100824_amd64.deb
* libmonetdb-client1_1.38.5-20100824_amd64.deb
* monetdb5-server_5.20.5-20100824_amd64.deb
* monetdb5-sql_2.38.5-20100824_amd64.deb
* monetdb-client_1.38.5-20100824_amd64.deb
For running the queries I use the SQL front end.
I have run the queries both through "mclient" (directly on the server)
and through the JDBC driver (from another client machine).
The MonetDB server is bound to run on only one core on the machine
(though I have not seen any difference if running it on multiple
cores).
To my surprise, the throughput for MonetDB for this workload is very low.
I get about 3 queries per second, which seems to indicate that MonetDB
does full table scanning only.
Am I correct in this assumption?
Is there anything that can be done to speed it up?
Is this not a workload suitable for MonetDB?
Looking forward to your input!
Regards,
Tudor.