mysqlslap
load emulation client
Synopsis
add an example, a script, a trick and tips
examples
no example yet ...
... Feel free to add your own example above to help other Linux-lovers !
description
mysqlslap
is a diagnostic program designed to emulate client load for
a MySQL server and to report the timing of each stage. It
works as if multiple clients are accessing the server.
Invoke
mysqlslap like this:
shell>
mysqlslap [options]
Some options
such as --create or
--query enable you to specify a string
containing an SQL statement or a file containing statements.
If you specify a file, by default it must contain one
statement per line. (That is, the implicit statement
delimiter is the newline character.) Use the
--delimiter option to specify a different
delimiter, which enables you to specify statements that span
multiple lines or place multiple statements on a single
line. You cannot include comments in a file;
mysqlslap does not understand them.
mysqlslap
runs in three stages:
1. Create
schema, table, and optionally any stored programs or data to
use for the test. This stage uses a single client
connection.
2. Run the load
test. This stage can use many client connections.
3. Clean up
(disconnect, drop table if specified). This stage uses a
single client connection.
Examples:
Supply your own
create and query SQL statements, with 50 clients querying
and 200 selects for each (enter the command on a single
line):
mysqlslap
--delimiter=";"
--create="CREATE TABLE a (b int);INSERT
INTO a VALUES (23)"
--query="SELECT * FROM a"
--concurrency=50
--iterations=200
Let
mysqlslap build the query SQL statement with a table
of two INT columns and three VARCHAR columns. Use five
clients querying 20 times each. Do not create the table or
insert the data (that is, use the previous test's schema and
data):
mysqlslap
--concurrency=5 --iterations=20
--number-int-cols=2
--number-char-cols=3
--auto-generate-sql
Tell the
program to load the create, insert, and query SQL statements
from the specified files, where the create.sql file has
multiple table creation statements delimited by ';' and
multiple insert statements delimited by ';'. The
--query file will have multiple queries
delimited by ';'. Run all the load statements, then run all
the queries in the query file with five clients (five times
each):
mysqlslap
--concurrency=5
--iterations=5 --query=query.sql
--create=create.sql
--delimiter=";"
mysqlslap
supports the following options, which can be specified on
the command line or in the [mysqlslap] and [client] groups
of an option file. mysqlslap also supports the
options for processing option files described at
Section 4.2.3.4, “Command-Line Options that
Affect Option-File Handling”.
•
--help, -?
Display a help
message and exit.
•
--auto-generate-sql,
-a
Generate SQL
statements automatically when they are not supplied in files
or using command options.
•
--auto-generate-sql-add-autoincrement
Add an
AUTO_INCREMENT column to automatically generated tables.
•
--auto-generate-sql-execute-number=N
Specify how
many queries to generate automatically.
•
--auto-generate-sql-guid-primary
Add a
GUID-based primary key to automatically generated
tables.
•
--auto-generate-sql-load-type=type
Specify the
test load type. The permissible values are read (scan
tables), write (insert into tables), key (read primary
keys), update (update primary keys), or mixed (half inserts,
half scanning selects). The default is mixed.
•
--auto-generate-sql-secondary-indexes=N
Specify how
many secondary indexes to add to automatically generated
tables. By default, none are added.
•
--auto-generate-sql-unique-query-number=N
How many
different queries to generate for automatic tests. For
example, if you run a key test that performs 1000 selects,
you can use this option with a value of 1000 to run 1000
unique queries, or with a value of 50 to perform 50
different selects. The default is 10.
•
--auto-generate-sql-unique-write-number=N
How many
different queries to generate for
--auto-generate-sql-write-number.
The default is 10.
•
--auto-generate-sql-write-number=N
How many row
inserts to perform on each thread. The default is 100.
•
--commit=N
How many
statements to execute before committing. The default is 0
(no commits are done).
•
--compress, -C
Compress all
information sent between the client and the server if both
support compression.
•
--concurrency=N, -c
N
The number of
clients to simulate when issuing the SELECT statement.
•
--create=value
The file or
string containing the statement to use for creating the
table.
•
--create-and-drop-schema=value
The schema in
which to run the tests. mysqlslap drops the schema at
the end of the test run. This option was added in MySQL
5.5.12.
•
--create-schema=value
The schema in
which to run the tests.
Note
If the --auto-generate-sql
option is also given, mysqlslap drops the schema at
the end of the test run. To avoid this, use the
--create-and-drop-schema
option instead.
•
--csv[=file_name]
Generate output
in comma-separated values format. The output goes to
the named file, or to the standard output if no file is
given.
•
--debug[=debug_options],
-# [debug_options]
Write a
debugging log. A typical debug_options string is
'd:t:o,file_name'. The default is
'd:t:o,/tmp/mysqlslap.trace'.
•
--debug-check
Print some
debugging information when the program exits.
•
--debug-info, -T
Print debugging
information and memory and CPU usage statistics when the
program exits.
•
--default-auth=plugin
The
client-side authentication plugin to use. See
Section 6.3.6, “Pluggable
Authentication”.
This option was
added in MySQL 5.5.10.
•
--delimiter=str, -F
str
The delimiter
to use in SQL statements supplied in files or using command
options.
•
--detach=N
Detach (close
and reopen) each connection after each N statements.
The default is 0 (connections are not detached).
•
--enable-cleartext-plugin
Enable the
mysql_clear_password cleartext authentication plugin. (See
Section 6.3.6.4, “The Cleartext Client-Side
Authentication Plugin”.) This option was added in
MySQL 5.5.27.
•
--engine=engine_name,
-e engine_name
The storage
engine to use for creating tables.
•
--host=host_name, -h
host_name
Connect to the
MySQL server on the given host.
•
--iterations=N, -i
N
The number of
times to run the tests.
•
--number-char-cols=N,
-x N
The number of
VARCHAR columns to use if
--auto-generate-sql is
specified.
•
--number-int-cols=N,
-y N
The number of
INT columns to use if
--auto-generate-sql is
specified.
•
--number-of-queries=N
Limit each
client to approximately this many queries. Query counting
takes into account the statement delimiter. For example, if
you invoke mysqlslap as follows, the ; delimiter is
recognized so that each instance of the query string counts
as two queries. As a result, 5 rows (not 10) are
inserted.
shell>
mysqlslap --delimiter=";"
--number-of-queries=10
--query="use test;insert into t
values(null)"
•
--only-print
Do not connect
to databases. mysqlslap only prints what it would
have done.
•
--password[=password],
-p[password]
The password to
use when connecting to the server. If you use the short
option form (-p), you cannot have a
space between the option and the password. If you omit the
password value following the
--password or -p option on
the command line, mysqlslap prompts for one.
Specifying a
password on the command line should be considered insecure.
See Section 6.1.2.1, “End-User Guidelines for
Password Security”. You can use an option file to
avoid giving the password on the command line.
•
--pipe, -W
On Windows,
connect to the server using a named pipe. This option
applies only if the server supports named-pipe
connections.
•
--plugin-dir=path
The directory
in which to look for plugins. It may be necessary to specify
this option if the --default-auth
option is used to specify an authentication plugin but
mysqlslap does not find it. See Section 6.3.6,
“Pluggable Authentication”.
This option was
added in MySQL 5.5.10.
•
--port=port_num, -P
port_num
The TCP/IP port
number to use for the connection.
•
--post-query=value
The file or
string containing the statement to execute after the tests
have completed. This execution is not counted for timing
purposes.
•
--shared-memory-base-name=name
On Windows, the
shared-memory name to use, for connections made using
shared memory to a local server. This option applies only if
the server supports shared-memory connections.
•
--post-system=str
The string to
execute using system() after the tests have completed. This
execution is not counted for timing purposes.
•
--pre-query=value
The file or
string containing the statement to execute before running
the tests. This execution is not counted for timing
purposes.
•
--pre-system=str
The string to
execute using system() before running the tests. This
execution is not counted for timing purposes.
•
--protocol={TCP|SOCKET|PIPE|MEMORY}
The connection
protocol to use for connecting to the server. It is useful
when the other connection parameters normally would cause a
protocol to be used other than the one you want. For details
on the permissible values, see Section 4.2.2,
“Connecting to the MySQL Server”.
•
--query=value, -q
value
The file or
string containing the SELECT statement to use for retrieving
data.
•
--silent, -s
Silent mode. No
output.
•
--socket=path, -S
path
For connections
to localhost, the Unix socket file to use, or, on Windows,
the name of the named pipe to use.
•
--ssl*
Options that
begin with --ssl specify whether to
connect to the server using SSL and indicate where to find
SSL keys and certificates. See Section 6.3.8.4,
“SSL Command Options”.
•
--user=user_name, -u
user_name
The MySQL user
name to use when connecting to the server.
•
--verbose, -v
Verbose mode.
Print more information about what the program does. This
option can be used multiple times to increase the amount of
information.
•
--version, -V
Display version
information and exit.
copyright
Copyright © 1997, 2013, Oracle and/or its affiliates. All rights
reserved.
This software and related documentation are provided under a
license agreement containing restrictions on use and disclosure
and are protected by intellectual property laws. Except as
expressly permitted in your license agreement or allowed by law,
you may not use, copy, reproduce, translate, broadcast, modify,
license, transmit, distribute, exhibit, perform, publish, or
display any part, in any form, or by any means. Reverse
engineering, disassembly, or decompilation of this software,
unless required by law for interoperability, is prohibited.
The information contained herein is subject to change without
notice and is not warranted to be error-free. If you find any
errors, please report them to us in writing.
If this software or related documentation is delivered to the
U.S. Government or anyone licensing it on behalf of the U.S.
Government, the following notice is applicable:
U.S. GOVERNMENT RIGHTS Programs, software, databases, and related
documentation and technical data delivered to U.S. Government
customers are "commercial computer software" or "commercial
technical data" pursuant to the applicable Federal Acquisition
Regulation and agency-specific supplemental regulations. As such,
the use, duplication, disclosure, modification, and adaptation
shall be subject to the restrictions and license terms set forth
in the applicable Government contract, and, to the extent
applicable by the terms of the Government contract, the
additional rights set forth in FAR 52.227-19, Commercial Computer
Software License (December 2007). Oracle USA, Inc., 500 Oracle
Parkway, Redwood City, CA 94065.
This software is developed for general use in a variety of
information management applications. It is not developed or
intended for use in any inherently dangerous applications,
including applications which may create a risk of personal
injury. If you use this software in dangerous applications, then
you shall be responsible to take all appropriate fail-safe,
backup, redundancy, and other measures to ensure the safe use of
this software. Oracle Corporation and its affiliates disclaim any
liability for any damages caused by use of this software in
dangerous applications.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. MySQL is a trademark of Oracle Corporation and/or its
affiliates, and shall not be used without Oracle’s express
written authorization. Other names may be trademarks of their
respective owners.
This software and documentation may provide access to or
information on content, products, and services from third
parties. Oracle Corporation and its affiliates are not
responsible for and expressly disclaim all warranties of any kind
with respect to third-party content, products, and services.
Oracle Corporation and its affiliates will not be responsible for
any loss, costs, or damages incurred due to your access to or use
of third-party content, products, or services.
This document in any form, software or printed matter, contains
proprietary information that is the exclusive property of Oracle.
Your access to and use of this material is subject to the terms
and conditions of your Oracle Software License and Service
Agreement, which has been executed and with which you agree to
comply. This document and information contained herein may not be
disclosed, copied, reproduced, or distributed to anyone outside
Oracle without prior written consent of Oracle or as specifically
provided below. This document is not part of your license
agreement nor can it be incorporated into any contractual
agreement with Oracle or its subsidiaries or affiliates.
This documentation is NOT distributed under a GPL license. Use of
this documentation is subject to the following terms:
You may create a printed copy of this documentation solely for
your own personal use. Conversion to other formats is allowed as
long as the actual content is not altered or edited in any way.
You shall not publish or distribute this documentation in any
form or on any media, except if you distribute the documentation
in a manner similar to how Oracle disseminates it (that is,
electronically for download on a Web site with the software) or
on a CD-ROM or similar medium, provided however that the
documentation is disseminated together with the software on the
same medium. Any other use, such as any dissemination of printed
copies or use of this documentation, in whole or in part, in
another publication, requires the prior written consent from an
authorized representative of Oracle. Oracle and/or its affiliates
reserve any and all rights to this documentation not expressly
granted above.
For more information on the terms of this license, or for details
on how the MySQL documentation is built and produced, please
visit MySQL Contact &
Questions.
For additional licensing information,
including licenses for third-party libraries used by MySQL
products, see Preface and Legal Notices.
For help with using MySQL, please visit
either the MySQL
Forums or MySQL Mailing Lists where you can discuss your issues with other MySQL
users.
For additional documentation on MySQL
products, including translations of the documentation into other
languages, and downloadable versions in variety of formats,
including HTML and PDF formats, see the MySQL Documentation Library.
mysqlslap
[
options]
see also
For
more information, please refer to the MySQL Reference
Manual, which may already be installed locally and which is
also available online at
http://dev.mysql.com/doc/.
author
Oracle
Corporation (http://dev.mysql.com/).