The MySQL Benchmark Suite
-------------------------
This should contain a technical description of the MySQL benchmark
suite (and `crash-me'), but that description is not written yet.
Currently, you can get a good idea of the benchmark by looking at the
code and results in the `sql-bench' directory in any MySQL source
distributions.
This benchmark suite is meant to be a benchmark that will tell any user
what things a given SQL implementation performs well or poorly at.
Note that this benchmark is single threaded, so it measures the minimum
time for the operations. We plan to in the future add a lot of
multi-threaded tests to the benchmark suite.
For example, (run on the same NT 4.0 machine):
*Reading 2000000 rows by index* *Seconds* *Seconds*
mysql 367 249
mysql_odbc 464
db2_odbc 1206
informix_odbc 121126
ms-sql_odbc 1634
oracle_odbc 20800
solid_odbc 877
sybase_odbc 17614
*Inserting (350768) rows* *Seconds* *Seconds*
mysql 381 206
mysql_odbc 619
db2_odbc 3460
informix_odbc 2692
ms-sql_odbc 4012
oracle_odbc 11291
solid_odbc 1801
sybase_odbc 4802
In the above test MySQL was run with a 8M index cache.
We have gather some more benchmark results at
`http://www.mysql.com/information/benchmarks.html'.
Note that Oracle is not included because they asked to be removed. All
Oracle benchmarks have to be passed by Oracle! We believe that makes
Oracle benchmarks *VERY* biased because the above benchmarks are
supposed to show what a standard installation can do for a single
client.
To run the benchmark suite, you have to download a MySQL source
distribution, install the perl DBI driver, the perl DBD driver for the
database you want to test and then do:
cd sql-bench
perl run-all-tests --server=#
where # is one of supported servers. You can get a list of all options
and supported servers by doing `run-all-tests --help'.
`crash-me' tries to determine what features a database supports and
what its capabilities and limitations are by actually running queries.
For example, it determines:
* What column types are supported
* How many indexes are supported
* What functions are supported
* How big a query can be
* How big a `VARCHAR' column can be
We can find the result from crash-me on a lot of different databases at
`http://www.mysql.com/information/crash-me.php'.