mysqlslap

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: PS: 还在翻译中,虽然翻译得很水,很不专业,慢慢有了一定的术语积累后,我会慢慢努力调整滴! mysqlslap — Load Emulation Client mysqlslap是mysql服务器的仿真客户端负载的诊断程序并报告每个阶段的时序,它能模拟大量客户端访问服务器的情形。 系统中可以这样调用mysqlslap: shell> mysqlslap [选项] 例

PS: 还在翻译中,虽然翻译得很水,很不专业,慢慢有了一定的术语积累后,我会慢慢努力调整滴!


mysqlslap — Load Emulation Client

mysqlslap是mysql服务器的仿真客户端负载的诊断程序并报告每个阶段的时序,它能模拟大量客户端访问服务器的情形。

系统中可以这样调用mysqlslap:
shell> mysqlslap [选项]
例如,有选项 --create 或 --query 能让你指定一个包含一条SQL语句的字符串或者一个描述文件。如果你指定了一个文件,默认该文件必须包含每行一个语句。
(另,默认的语句限定符就是换行符。)使用 --delimiter 选项可以指定一个不同的界定符,这样就能让你指定跨多行的语句或在一行上写多行语句.需要注意的
是,mysqlslap不理解注释,所以文件中不能有!

mysqlslap运行分三个阶段:
    创建schema,table和任何用来测试的已经存储了的程序和数据. 这个阶段使用单客户端连接.
    
    进行负载测试. 这个阶段使用多客户端连接.
    
    清除(断开连接,删除指定表). 这个阶段使用单客户端连接.
    
例子:

a.提供你自己的创建和查询SQL语句,有50个客户端查询每个查询200次 (在单行上输入命令):

mysqlslap --delimiter=";"
  --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)"
  --query="SELECT * FROM a" --concurrency=50 --iterations=200

b.让mysqlslap创建查询的SQL语句,使用的表有2个INT行和3个VARCHAR行.使用5个客户端,每一个查询20次!不要创建表或插入数据.(换言之,用之前测试的模式和数据):

mysqlslap --concurrency=5 --iterations=20
  --number-int-cols=2 --number-char-cols=3
  --auto-generate-sql

c. 告诉程序从指定的create.sql文件去加载create,insert和查询等SQL语句, 该文件有多个表的create和insert语句, 它们都是通过';'分隔开的. query.sql文件则有
多个查询语句, 分隔符也是';', 执行所有的加载语句,然后通过查询文件执行所有的查询语句,分别在5个客户端上每个执行5次:

mysqlslap --concurrency=5
  --iterations=5 --query=query.sql --create=create.sql
  --delimiter=";"


mysqlslap支持如下的选项, 这些选项能被指定在命令行或者在打开的文件的[mysqlslap]和[client]组中. mysqlslap同样支持选项中指定处理相应的文件!这部分的详细描述可以看“Command-Line Options that Affect Option-File Handling”.

!======================================================================================
Table 4.8. mysqlslap Options    [这个表暂时未译]
Format    Option File    Description    Introduced
--auto-generate-sql    auto-generate-sql    Generate SQL statements automatically when they are not supplied in files or using command options    
--auto-generate-sql-add-autoincrement    auto-generate-sql-add-autoincrement    Add AUTO_INCREMENT column to automatically generated tables    
--auto-generate-sql-execute-number=#    auto-generate-sql-execute-number    Specify how many queries to generate automatically    
--auto-generate-sql-guid-primary    auto-generate-sql-guid-primary    Add a GUID-based primary key to automatically generated tables    
--auto-generate-sql-load-type=type    auto-generate-sql-load-type    Specify how many queries to generate automatically    
--auto-generate-sql-secondary-indexes=#    auto-generate-sql-secondary-indexes    Specify how many secondary indexes to add to automatically generated tables    
--auto-generate-sql-unique-query-number=#    auto-generate-sql-unique-query-number    How many different queries to generate for automatic tests.    
--auto-generate-sql-unique-write-number=#    auto-generate-sql-unique-write-number    How many different queries to generate for --auto-generate-sql-write-number    
--auto-generate-sql-write-number=#    auto-generate-sql-write-number    How many row inserts to perform on each thread    
--commit=#    commit    How many statements to execute before committing.    
--compress    compress    Compress all information sent between the client and the server    
--concurrency=#    concurrency    The number of clients to simulate when issuing the SELECT statement    
--create=value    create    The file or string containing the statement to use for creating the table    
--create-and-drop-schema=value    create-and-drop-schema    The schema in which to run the tests; dropped at the end of the test run    5.6.3
--create-schema=value    create-schema    The schema in which to run the tests    
--csv=[file]    csv    Generate output in comma-separated values format    
--debug[=debug_options]    debug    Write a debugging log    
--debug-check    debug-check    Print debugging information when the program exits    
--debug-info    debug-info    Print debugging information, memory and CPU statistics when the program exits    
--default-auth=plugin    default-auth=plugin    The authentication plugin to use    5.6.2
--delimiter=str    delimiter    The delimiter to use in SQL statements    
--detach=#    detach    Detach (close and reopen) each connection after each N statements    
--enable-cleartext-plugin    enable-cleartext-plugin    Enable cleartext authentication plugin    5.6.7
--engine=engine_name    engine    The storage engine to use for creating the table    
--help         Display help message and exit    
--host=host_name    host    Connect to the MySQL server on the given host    
--iterations=#    iterations    The number of times to run the tests    
--login-path=name         Read login path options from .mylogin.cnf    5.6.6
--number-char-cols=#    number-char-cols    The number of VARCHAR columns to use if --auto-generate-sql is specified    
--number-int-cols=#    number-int-cols    The number of INT columns to use if --auto-generate-sql is specified    
--number-of-queries=#    number-of-queries    Limit each client to approximately this number of queries    
--only-print    only-print    Do not connect to databases. mysqlslap only prints what it would have done    
--password[=password]    password    The password to use when connecting to the server    
--pipe         On Windows, connect to server using a named pipe    
--plugin-dir=path    plugin-dir=path    The directory where plugins are located    5.6.2
--port=port_num    port    The TCP/IP port number to use for the connection    
--post-query=value    post-query    The file or string containing the statement to execute after the tests have completed    
--post-system=str    post-system    The string to execute using system() after the tests have completed    
--pre-query=value    pre-query    The file or string containing the statement to execute before running the tests    
--pre-system=str    pre-system    The string to execute using system() before running the tests    
--protocol=type    protocol    The connection protocol to use    
--query=value    query    The file or string containing the SELECT statement to use for retrieving data    
--silent    silent    Silent mode    
--socket=path    socket    For connections to localhost    
--ssl-ca=file_name    ssl-ca    The path to a file that contains a list of trusted SSL CAs    
--ssl-capath=dir_name    ssl-capath    The path to a directory that contains trusted SSL CA certificates in PEM format    
--ssl-cert=file_name    ssl-cert    The name of the SSL certificate file to use for establishing a secure connection    
--ssl-cipher=cipher_list    ssl-cipher    A list of allowable ciphers to use for SSL encryption    
--ssl-crl=file_name    ssl-crl    The path to a file that contains certificate revocation lists    5.6.3
--ssl-crlpath=dir_name    ssl-crlpath    The path to a directory that contains certificate revocation list files    5.6.3
--ssl-key=file_name    ssl-key    The name of the SSL key file to use for establishing a secure connection    
--ssl-verify-server-cert    ssl-verify-server-cert    The server's Common Name value in its certificate is verified against the host name used when connecting to the server    
--user=user_name,    user    MySQL user name to use when connecting to server    
--verbose         Verbose mode    
--version         Display version information and exit    

!======================================================================================

    --help, -?
    显示帮助信息和退出.
    
    --auto-generate-sql, -a
    自动生成sql语句,当没有使用命令选项或在文件中提供的时候,可以用该选项.

    --auto-generate-sql-add-autoincrement
    添加一个 AUTO_INCREMENT 列去自动生成表.

    --auto-generate-sql-execute-number=N
    指定自动生成的查询数

    --auto-generate-sql-guid-primary
    添加一个基于GUID的主键来自动生成表.

    --auto-generate-sql-load-type=type
    指定负载测试的类型. 允许设置得类型有 read(扫描表), write(插入数据到表中), key(读取主键值), update(更新主键值), 或 mixed(一半插入,一半扫描选择).
    默认是 mixed 类型.
    
    --auto-generate-sql-secondary-indexes=N
    指定有多少二级索引添加到自动生成的表中. 默认是不添加.

    --auto-generate-sql-unique-query-number=N
    为自动检测指定生成的查询次数. 例如,如果你运行一个执行1000次选择的键值测试,你能使用这个选项,赋值为1000来执行1000次唯一的查询,或者赋值为50来
执行50次不同的选择. 默认值是10.

    --auto-generate-sql-unique-write-number=N
    为 "--auto-generate-sql-write-number" 生成多少次查询. 默认是10.

    --auto-generate-sql-write-number=N
    单进程执行多少次行的插入. 默认是100.

    --commit=N
    提交前执行多少次语句. 默认是0 (也就是不提交).

    --compress, -C
    压缩所有在服务器和客户端之间传输的信息,当然,要服务器和客户端都支持压缩.

    --concurrency=N, -c N
    模拟多少并发的客户端查询.
    The number of clients to simulate when issuing the SELECT statement.

    --create=value
    指定用来创建表的文件或者字符串.

    --create-and-drop-schema=value
    选择运行在测试中的模式. 运行结束后, mysqlslap删除该模式. 这个选项在5.6.3中被添加!
    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.6.3.
    
    --create-schema=value
    选择运行在测试中的模式.
    The schema in which to run the tests.
    注意:
    如果 "--auto-generate-sql" 也被给出, mysqlslap也会在运行结束后删除该模式. 为了避免这个,建议直接用 "--create-and-drop-schema" 代替它.

    --csv[=file_name]
    生成输出,值用逗号分开的格式. 输出到指定的文件,如果没给出指定文件,则标准输出.

    --debug[=debug_options], -# [debug_options]
    写入调试日志. 一个典型的调试选项的字符串是 'd:t:o, file_name'. 默认的是 'd:t:o,/tmp/mysqlslap.trace'.

    --debug-check
    调试检查. 当程序退出时打印一些调试信息.

    --debug-info, -T
    当程序退出时, 打印调试信息以及内存和CPU的使用量统计.

    --default-auth=plugin
    使用客户端认证插件.  See Section 6.3.7, “Pluggable Authentication”.
    这个选项在 MySQL 5.6.2 中添加进去的.

    --delimiter=str, -F str
    分界符, 在文件或命令选项中的SQU语句有效.
    
    --detach=N
    在每N条语句之后,断开每个连接(关闭和重新打开). 默认是0(即连接不断开.)

    --enable-cleartext-plugin
    启动 mysql_clear_password明文认证插件. (See Section 6.3.7.5, “The Cleartext Client-Side Authentication Plugin”.)这个选项在 MySQL 5.6.7上添加.

    --engine=engine_name, -e engine_name
    指定创表所使用的存储引擎.

    --host=host_name, -h host_name
    在指定的主机上连接到MySQL服务器.

    --iterations=N, -i N
    测试执行地次数.

    --number-char-cols=N, -x N
    VARCHAR列的数量,如果 "--auto-generate-sql" 指定了的话.

    --number-int-cols=N, -y N
    INT列的数量,如果 " --auto-generate-sql" 被指定了的话.
    
    --number-of-queries=N
    限制每个客户端大概这么多的查询次数. 查询统计考虑了语句的分隔符. 例如,如果你像下面这样调用了mysqlslap, ";" 分隔符会被认出,那么如下的
    每个查询实例将被统计为两次查询. 结果是,5列 (不是10)被插入.
    shell>shell> mysqlslap --delimiter=";" --number-of-queries=10
             --query="use test;insert into t values(null)"
            
    --only-print
    不连接到数据库. mysqlslap仅仅打印它会做什么.

    --password[=password], -p[password]
    连接服务器的密码. 如果使用简短的选项格式 "-p", 你不能在选项和密码之间加上空格. 如果在命令行输入的时候,你在 "--password" 和 "-p"选项的后面
    省略密码值, mysqlslap 会提示你输入密码.
    
    在命令行直接指定密码是不安全的. See Section 6.1.2.1, “End-User Guidelines for Password Security”. 你可以使用一个选项文件去避免直接在
    命令行给出密码.

    --pipe, -W
    在Windows上,连接服务器只用一个命名的管道.  这个选项仅仅能应用到支持命令管道连接的服务器上.
    
    --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.7, “Pluggable Authentication”.

    This option was added in MySQL 5.6.2.

    --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.9.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.


mysqlslap测试案例


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
存储 SQL 关系型数据库
Mysqlslap性能测试MySQL三种存储引擎
Mysqlslap性能测试MySQL三种存储引擎
|
关系型数据库 MySQL 测试技术
mysqlslap mysql性能测试
mysqlslap是mysql自带的基准测试工具,优点:查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端 同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.msqlslap为mysql性 能优化前后提供了直观的验证依据,建议系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的 掌握线上数据库支撑的用户流量上限及其抗压性等问题。
156 0
|
SQL 关系型数据库 MySQL
【MySQL】mysqlbinlog_flashback工具使用
mysqlbinlog_back.py 是在线读取row格式的mysqld的binlog,然后生成反向的sql语句的工具。 一般用于数据恢复的目的。 所谓反向的sql语句就是如果是insert,则反向的sql为delete。 如果delete,反向的sql是insert,如果是update, 反向的sql还是update,但是update的值是原来的值。
221 0
【MySQL】mysqlbinlog_flashback工具使用
|
MySQL 关系型数据库
|
关系型数据库 MySQL
|
SQL 关系型数据库 MySQL
|
SQL 关系型数据库 测试技术
|
SQL 关系型数据库 MySQL