mysqlslap 是一个诊断程序,旨在模拟 MySQL 服务器的客户端负载并报告每个阶段的时间。就像多个客户端正在访问服务器一样。
选项
帮助选项
- –help, -?
- 帮助
- –version, -V
- 显示版本信息并退出
连接选项
–compress, -C已过时,将来会删除。
如果可能,压缩客户端和服务器之间发送的所有信息
- –compression-algorithms=value
- 连接服务器端时允许的压缩算法,默认不压缩 (uncompressed)
- 可用算法对应系统变量 protocol_compression_algorithms
- –default-auth=plugin
- 客户端的默认身份认证插件
- –enable-cleartext-plugin
- 启用 mysql_clear_password 明文身份验证插件
- –get-server-public-key
- 从服务端请求基于 RSA 密钥对的密码交换所需的公共密钥。此选项适用于使用 caching_sha2_password 身份验证插件进行身份验证的客户端
- –host=host_name, -h host_name
- 主机名
- –login-path=name
- 从登录路径文件 .mylogin.cnf 中读取选项
- –only-print
- 不连接到数据库,只是打印出 mysqlslap 可能做的事情
- –password[=password], -p
此处含有隐藏内容,需要正确输入密码后可见!
- 密码。选项和密码之间不能有空格。使用 –skip-password 跳过密码
–pipe, -W在 Windows 上,使用命名管道连接到服务器。
- –plugin-dir=dir_name
- 插件目录。如果 –default-auth 指定了插件但是找不到,可以指定此选项。
- –port=port_num, -P port_num
- TCP/IP 连接的端口
- –protocol={TCP|SOCKET|PIPE|MEMORY}
- 连接到服务端所用的传输协议
- –server-public-key-path=file_name
- PEM 格式的文件的路径名,其中包含服务器用于基于 RSA 密钥对的密码交换所需的公用密钥的客户端副本
- 此选项适用于使用 sha256_password 或 caching_sha2_password 身份验证插件进行身份验证的客户端。
- 如果给定了此选项,并指定了有效的公钥文件,则它优先于 –get-server-public-key。
–shared-memory-base-name=name在 Windows 上,共享内存名称,用于使用共享内存与本地服务器建立的连接。默认值为 MYSQL。
- –socket=path, -S path
- socket 路径
- –ssl*
- 以 ssl 开头的选项表示是否使用 SSL 连接,以及 SSL 密钥和证书的路径
- –ssl-fips-mode={OFF|ON|STRICT}
- 是否在客户端上启用 FIPS 模式
- –tls-ciphersuites=ciphersuite_list
- 使用 TLSv1.3 的加密连接的允许密码列表
- –tls-version=protocol_list
- 加密连接允许的 TLS 协议
- –user=user_name, -u user_name
- 用户
- –zstd-compression-level=level
- zstd 算法的压缩级别,允许的压缩级别是 1-22,默认是3
调试选项
–debug[=debug_options], -# [debug_options]MySQL 的二进制发行版不是以此选项构建的。
编写调试日志。典型的 debug_options 字符串是 d:t:o,file_name。默认值为 d:t:o,/tmp/mysql.trace。仅当 MySQL 是使用 WITH_DEBUG 构建的时,此选项才可用
–debug-checkMySQL 的二进制发行版不是以此选项构建的。
程序退出时,打印一些调试信息。仅当 MySQL 是使用 WITH_DEBUG 构建的时,此选项才可用。
–debug-info, -TMySQL 的二进制发行版不是以此选项构建的。
程序退出时,打印调试信息以及内存和 CPU 使用情况统计信息。仅当 MySQL 是使用 WITH_DEBUG 构建的时,此选项才可用。
- –verbose, -v
- 详细模式。产生有关程序功能的更多输出。可以多次指定此选项 (如 -v -v -v),以产生越来越多的输出。
- –silent, -s
- 安静模式,产生较少的输出。可以多次指定,以产生越来越少的输出。
- 此选项导致非表格输出和特殊字符转义,可以使用 –raw 禁用字符转义。
- –sql-mode=mode
- 设置客户端会话的 SQL MODE
配置文件选项
- –defaults-extra-file=file_name
- 额外的配置文件。在全局配置文件之后,用户配置文件之前会读取此文件。
- –defaults-file=file_name
- 仅读取给定的配置文件。.mylogin.cnf 例外,这个配置文件总是被读取。
- –defaults-group-suffix=str
- 选项组名称的后缀
如果 –defaults-group-suffix=_other,mysql 也会读取 [client_other] 和 [mysql_other] 组。
- 选项组名称的后缀
-
–no-defaults
- 不读取任何配置文件 (.mylogin.cnf 例外)
- –print-defaults
- 打印输出程序名称和所有读取的配置文件内容
自动生成查询语句选项
- –auto-generate-sql, -a
- 自动生成查询语句
- –auto-generate-sql-add-autoincrement
- 在自动生成的表中增加一个自增列
- –auto-generate-sql-execute-number=N
- 指定要自动生成的查询数
- –auto-generate-sql-guid-primary
- 在自动生成的表中增加一个基于 GUID 的主键
- –auto-generate-sql-load-type=type
- 指定测试加载类型
- 选项值
- read
- 扫描表
- write
- 插入到表中
- key
- 读取主键
- update
- 更新主键
- mixed
- (默认) 一半插入,一半扫描表
- read
- –auto-generate-sql-secondary-indexes=N
- 在自动生成的表中添加 N 个辅助索引。默认不添加
- –auto-generate-sql-unique-query-number=N
- 为自动测试生成多少个不同的查询。默认10
- –auto-generate-sql-unique-write-number=N
- 为 –auto-generate-sql-write-number=N 生成多少不同的查询。默认10
- –number-char-cols=N, -x N
- 自动生成的查询语句中的 VARCHAR 列的数量
- –number-int-cols=N, -y N
- 自动生成的查询语句中的 INT 列的数量
- –delimiter=str
- 语句的定界符,默认是
;
- 语句的定界符,默认是
运行测试的动作选项
- –auto-generate-sql-write-number=N
- 执行多少条行插入。默认100
- –commit=N
- 在提交前执行多少语句。默认0,不提交
- –concurrency=N, -c N
- 模仿的并行客户端数量
- –create=value
- 包含建表的语句的文件或字符串
- –create-schema=value
- 指定运行测试的数据库
- 如果同时使用 –auto_generate-sql 选项,会在测试结束后删除对应的库。可以指定 –no-drop 来避免
- –csv[=file_name]
- 生成 CSV 格式的输出数据 (逗号分隔)
- –detach=N
- 在每 N 条语句之后断开 (断开重连) 连接。默认值为0 (连接不断开)
- –engine=engine_name, -e engine_name
- 用于建表的存储引擎
- –iterations=N, -i N
- 运行测试的次数
- –no-drop
- 阻止 mysqlslap 在测试期间删除数据库
- –number-of-queries=N
- 每个客户端的查询数量
-
这个数量只是个大约值,有可能在一条语句中包含两个查询
mysqlslap --delimiter=";" --number-of-queries=10 --query="use test;insert into t values(null)"
- –query=value, -q value
- 包含用于查询数据的 SELECT 语句的文件或字符串
测试完成前后的动作选项
- –post-query=value
- 包含测试完成后要执行的语句的文件或字符串
- –post-system=str
- 测试完成后使用 system() 执行的语句
- –pre-query=value
- 在测试前要执行的语句,可以包含在文件或字符串中
- –pre-system=str
- 测试前使用 system() 执行的语句
配置
运行阶段
- 创建架构,表以及可选的任何存储程序或数据以供测试使用。
- 此阶段使用单个客户端连接
- 运行负载测试
- 此阶段可以使用许多客户端连接
- 清理 (断开连接,删除指定的表)
- 此阶段使用单个客户端连接
调用语法
mysqlslap [options]
- 可以指定包含 SQL 语句的字符串或文件。
- 如果使用配置文件,必须一行一个语句。不能包含注释,mysqlslap 无法识别。
- 配置文件中支持标签组 [mysqlslap]、[client]。
示例
- 50个客户端,每个客户端进行200次查询
mysqlslap --delimiter=";" --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" --query="SELECT * FROM a" --concurrency=50 --iterations=200
- –delimiter
- 分隔符
- –concurrency
- 并发数
- –iterations
- 叠加数
- –delimiter
- 用2个 int 列,3个 varchar 列构建查询,5个客户端,每个客户端执行20次
mysqlslap --concurrency=5 --iterations=20 --number-int-cols=2 --number-char-cols=3 --auto-generate-sql
- –number-int-cols
- int 列的数量
- –number-char-cols
- varchar 列的数量
- –number-int-cols
- 5个客户端,每个客户端执行5次
mysqlslap --concurrency=5 --iterations=5 --query=query.sql --create=create.sql --delimiter=";"
- –query
- 指定查询文件
- –create
- 指定建表语句和插入语句的文件
- –query