Mysqlslap is the official stress testing tool from the beginning of MySQL version 5.1.4. stress testing is performed by simulating multiple concurrent clients accessing MySQL concurrently, providing a detailed performance report of SQL execution data, and a good comparison of performance differences between multiple storage engines (MYISAM,INNODB, etc.) under the same concurrency pressure in the same environment.
Mysqlslap Official Document: https://dev.mysql.com/doc/refman/5.6/en/mysqlslap.html
Table 4.14 mysqlslap
Options
Format |
Description |
introduced |
--auto-generate-sql |
Generate SQL statements automatically when they is not supplied in files or using command options |
|
--auto-generate-sql-add-autoincrement |
ADD auto_increment column to automatically generated tables |
|
--auto-generate-sql-execute-number |
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 |
Specify the test load type |
|
--auto-generate-sql-secondary-indexes |
Specify how many secondary indexes to add to automatically generated tables |
|
--auto-generate-sql-unique-query-number |
How many different queries to generate for automatic tests. |
|
--auto-generate-sql-unique-write-number |
How many different queries to generate for--auto-generate-sql-write-number |
|
--auto-generate-sql-write-number |
How many row inserts to perform on each thread |
|
--commit |
How many statements to execute before committing. |
|
--compress |
Compress all information sent between client and server |
|
--concurrency |
Number of clients to simulate when issuing the SELECT statement |
|
--create |
File or string containing the statement to use for creating the table |
|
--create-schema |
Schema in which to run the tests |
|
--csv |
Generate output in comma-separated values format |
|
--debug |
Write Debugging Log |
|
--debug-check |
Print Debugging information when program exits |
|
--debug-info |
Print debugging information, memory, and CPU statistics when program exits |
|
--default-auth |
Authentication plugin to use |
5.6.2 |
--defaults-extra-file |
Read named option file in addition to usual option files |
|
--defaults-file |
Read only named option file |
|
--defaults-group-suffix |
Option Group suffix value |
|
--delimiter |
Delimiter to use in SQL statements |
|
--detach |
Detach (Close and reopen) each connection after each N statements |
|
--enable-cleartext-plugin |
Enable cleartext Authentication Plugin |
5.6.7 |
--engine |
Storage engine to use for creating the table |
|
--help |
Display Help message and exit |
|
--host |
Connect to MySQL server on given host |
|
--iterations |
Number of times to run the tests |
|
--login-path |
Read login path options from. mylogin.cnf |
5.6.6 |
--no-defaults |
Read no option files |
|
--no-drop |
Don't drop any schema created during the test run |
5.6.3 |
--number-char-cols |
Number of VARCHAR columns to use if--AUTO-GENERATE-SQL is specified |
|
--number-int-cols |
Number of INT columns to use if--AUTO-GENERATE-SQL is specified |
|
--number-of-queries |
Limit each client to approximately this number of queries |
|
--only-print |
Don't connect to databases. Mysqlslap only prints what it would has done |
|
--password |
Password to use when connecting to server |
|
--pipe |
On Windows, connect to server using named pipe |
|
--plugin-dir |
Directory where plugins is installed |
5.6.2 |
--port |
TCP/IP port number to use for connection |
|
--post-query |
File or string containing the statement to execute after the tests has completed |
|
--post-system |
String to execute using System () after the tests has completed |
|
--pre-query |
File or string containing the statement to execute before running the tests |
|
--pre-system |
String to execute using System () before running the tests |
|
--print-defaults |
Print default Options |
|
--protocol |
Connection protocol to use |
|
--query |
File or string containing the SELECT statement to use for retrieving data |
|
--secure-auth |
Do not send passwords to server in old (pre-4.1) format |
5.6.17 |
--shared-memory-base-name |
The name of the shared memory to use for shared-memory connections |
|
--silent |
Silent mode |
|
--socket |
For connections to localhost, the Unix socket file |
|
--ssl |
Enable Secure connection |
|
--ssl-ca |
Path of file that contains list of trusted SSL CAs |
|
--ssl-capath |
Path of directory that contains trusted SSL CA certificates in PEM format |
|
--ssl-cert |
Path of file that contains X509 certificate in PEM format |
|
--ssl-cipher |
List of permitted ciphers to use for connection encryption |
|
--ssl-crl |
Path of file that contains certificate revocation lists |
5.6.3 |
--ssl-crlpath |
Path of directory that contains certificate revocation list files |
5.6.3 |
--ssl-key |
Path of file that contains X509 key in PEM format |
|
--ssl-mode |
Security State of connection to server |
5.6.30 |
--ssl-verify-server-cert |
Verify Server certificate Common name value against host name used when connecting to server |
|
--user |
MySQL user name to use when connecting to server |
|
--verbose |
Verbose mode |
|
--version |
Display Version information and exit |
|
Parameter reference table:
--host=host_name, -h host_name 连接到的MySQL服务器的主机名(或IP地址),默认为本机localhost
--user=user_name, -u user_name 连接MySQL服务时用的用户名
--password[=password], -p[password] 连接MySQL服务时用的密码
--create-schema 代表自定义的测试库名称,测试的schema,MySQL中schema也就是database。
(没指定使用哪个数据库时,可能会遇到错误mysqlslap: Error when connecting to server: 1049 Unknown database
‘mysqlslap‘
)
--query=name,-q 使用自定义脚本执行测试(可以是SQL字符串或脚本),例如可以调用自定义的一个存储过程或者sql语句来执行测试。
--create 创建表所需的SQL(可以是SQL字符串或脚本)
--concurrency=N, -c N 表示并发量,也就是模拟多少个客户端同时执行query。可指定多个值,以逗号或者--delimiter参数指定的值做为分隔符。例如:--concurrency=100,200,500(分别执行100、200、500个并发)。
--iterations=N, -i N 测试执行的迭代次数,代表要在不同的并发环境中,各自运行测试多少次;多次运行以便让结果更加准确。
--number-of-queries=N 总的测试查询次数(并发客户数×每客户查询次数)
--engine=engine_name, -e engine_name 代表要测试的引擎,可以有多个,用分隔符隔开。例如:--engine=myisam,innodb,memory。
--auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试并发压力。
--auto-generate-sql-load-
type
=
type
测试语句的类型。代表要测试的环境是读操作还是写操作还是两者混合的。取值包括:
read
(scan tables), write (insert into tables), key (
read
primary keys), update (update primary keys), or mixed (half inserts, half scanning selects). 默认值是:mixed.
--auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从5.1.18版本开始支持。
--number-char-cols=N, -x N 自动生成的测试表中包含多少个字符类型的列,默认1
--number-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1
--commint=N 多少条DML后提交一次。
--compress, -C 如果服务器和客户端支持都压缩,则压缩信息传递。
--only-print 只打印测试语句而不实际执行。
--detach=N 执行N条语句后断开重连。
--debug-info, -T 打印内存和CPU的相关信息。
The MYSQLSLAP operation has the following 3 steps:
1. Create schema, table, test data, etc. (in MySQL, the schema is database);
2. Run the load test, you can use multiple concurrent client connections;
3. Test environment Cleanup (delete created data, tables, etc.). Case:
[Email protected] ~]# mysqlslap-a--concurrency=50,100--number-of-queries 1000-- Auto-generate-sql-add-autoincrement--number-char-cols=10--number-int-cols=5-poracle
Warning:using a password on the command line interface can is insecure.
Benchmark
Average number of seconds to run all queries:0.775 seconds
Minimum number of seconds to run all queries:0.775 seconds
Maximum number of seconds to run all queries:0.775 seconds
Number of clients running QUERIES:50
Average number of queries per client:20
Benchmark
Average number of seconds to run all queries:0.984 seconds
Minimum number of seconds to run all queries:0.984 seconds
Maximum number of seconds to run all queries:0.984 seconds
Number of clients running queries:100
Average number of queries per Client:10
[Email protected] ~]# mysqlslap-a--concurrency=50,100--number-of-queries 1000-- Auto-generate-sql-add-autoincrement--number-char-cols=10--number-int-cols=5--engine=myisam,innodb-poracle
Warning:using a password on the command line interface can is insecure.
Benchmark
Running for Engine MyISAM
Average number of seconds to run all queries:0.117 seconds
Minimum number of seconds to run all queries:0.117 seconds
Maximum number of seconds to run all queries:0.117 seconds
Number of clients running QUERIES:50
Average number of queries per client:20
Benchmark
Running for Engine MyISAM
Average number of seconds to run all queries:0.129 seconds
Minimum number of seconds to run all queries:0.129 seconds
Maximum number of seconds to run all queries:0.129 seconds
Number of clients running queries:100
Average number of queries per Client:10
Benchmark
Running for Engine InnoDB
Average number of seconds to run all queries:1.665 seconds
Minimum number of seconds to run all queries:1.665 seconds
Maximum number of seconds to run all queries:1.665 seconds
Number of clients running QUERIES:50
Average number of queries per client:20
Benchmark
Running for Engine InnoDB
Average number of seconds to run all queries:1.480 seconds
Minimum number of seconds to run all queries:1.480 seconds
Maximum number of seconds to run all queries:1.480 seconds
Number of clients running queries:100
Average number of queries per Client:10
MySQL MySQL database stress test tool (MYSQLSLAP)