共计 7456 个字符,预计需要花费 19 分钟才能阅读完成。
MySQLslap 是从 MySQL 的 5.1.4 版开始就开始官方提供的压力测试工具。通过模拟多个并发客户端并发访问 mysql 来执行压力测试,同时提供了较详细的 SQL 执行数据性能报告,并且能很好的对比多个存储引擎(MyISAM,InnoDB 等)在相同环境下的相同并发压力下的性能差别。
mysqlslap 官方文档: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 are 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 | Do not 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 | Do not connect to databases. mysqlslap only prints what it would have done | |
–password | Password to use when connecting to server | |
–pipe | On Windows, connect to server using named pipe | |
–plugin-dir | Directory where plugins are 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 have completed | |
–post-system | String to execute using system() after the tests have 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 shared memory to use for shared-memory connections | |
–silent | Silent mode | |
–socket | For connections to localhost, the Unix socket file to use | |
–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 |
参数参考表:
–host=host_name, -h host_name 连接到的 MySQL 服务器的主机名(或 IP 地址),默认为本机 localhost
–user=user_name, -u user_name 连接 MySQL 服务时用的用户名
–password[=password], -p
此处含有隐藏内容,需要正确输入密码后可见!
连接 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 的相关信息。
mysqlslap 的运行有如下 3 个步骤:
1. 创建 schema、table、test data 等(在 MySQL 中,schema 就是 database);
2. 运行负载测试,可以使用多个并发客户端连接;
3. 测试环境清理(删除创建的数据、表等)。
案例:
[root@mysql ~]# 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 be 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
[root@mysql ~]# 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 be 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
本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-06/144820.htm