MySQL Benchmarking

As of MySQL 5.1.4, there is a supported benchmarking tool called mysqlslap. Not sure where they got the name from, is there going to be a mysqltickle next?

create database mysqlslap
use mysqlslap
use schema.sql

mysqlslap –skip-create-schema

mysqlslap: No user supplied data to insert or –auto-generate-sql specified!

trashes schema

I’ll be using the MySQL Sakila Sample Database.

[arabx@web1 sql]$ mysqlslap -P3307 -hlocalhost.localdomain -uroot –auto-generate-sql Seconds to load data: 0.08929
Number of clients loading data: 1
Number of inserts per client: 0
Seconds to run all queries: 0.23113
Number of clients running queries: 1
Number of queries per client: 1000

mysql -P3307 -usakila -psakila sakila

mysqlslap -P3307 -hlocalhost.localdomain -uroot –create=schema.sql
mysqlslap: No user supplied data to insert or –auto-generate-sql specified!
[arabx@web1 sql]$ mysql -P3307 -hlocalhost.localdomain -uroot mysqlslap


$ mysqlslap -?
mysqlslap  Ver 0.1 Distrib 5.1.4-alpha, for pc-linux-gnu (i686)
Copyright (C) 2005 MySQL AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL        license

Run a query multiple times against the server

Usage: mysqlslap [OPTIONS]

Default options are read from the following files in the given order:
/etc/my.cnf ~/.my.cnf
The following groups are read: mysqlslap client
The following options may be given as the first argument:
--print-defaults        Print the program argument list and exit
--no-defaults           Don't read default options from any options file
--defaults-file=#       Only read default options from the given file #
--defaults-extra-file=# Read this file after the global files are read
  -a, --auto-generate-sql
                      Generate SQL where not supplied by file or command line.
  -C, --compress      Use compression in server/client protocol.
  -l, --concurrency-load=#
                      Number of clients to use when loading data.
  -c, --concurrency=# Number of clients to simulate for query to run.
  --create=name       File or string to use for create.
  -d, --data=name     File or string with INSERT to use for populating data.
  -#, --debug[=name]  Output debug log. Often this is 'd:t:o,filename'.
  -F, --delimiter=name
                      Delimiter to use in SQL statements supplied in file or
                      command line.
  -D, --drop-schema   Drop schema if it exists prior to running and after
  -e, --engine=name   Storage engine to use for creating the table.
  -?, --help          Display this help and exit.
  -h, --host=name     Connect to host.
  -i, --iterations=#  Number of iterations.
  -x, --number-char-cols=#
                      Number of INT columns to create table with if specifying
  -y, --number-int-cols=#
                      Number of VARCHAR columns to create table with if
                      specifying --sql-generate-sql.
  -n, --number-rows=# Number of rows to insert when loading data.
  -p, --password[=name]
                      Password to use when connecting to server. If password is
                      not given it's asked from the tty.
  -P, --port=#        Port number to use for connection.
  --protocol=name     The protocol of connection (tcp,socket,pipe,memory).
  -A, --skip-create-schema
                      Don't create a schema, use existing schema.
  -L, --skip-data-load
                      Don't load any data, use existing data set.
  -Q, --skip-query    Don't run any queries.
  -s, --silent        Run program in silent mode - no output.
  -q, --query=name    Query to run or file containing query to run.
  -S, --socket=name   Socket file to use for connection.
  -u, --user=name     User for login if not current user.
  -v, --verbose       More verbose output; You can use this multiple times to
                      get even more verbose output.
  -V, --version       Output version information and exit.