Documentation Home
MySQL 8.0 参考手册  / 第 4 章 MySQL 程序  / 4.5 客户端程序  /  4.5.8 mysqlslap — 负载仿真客户端

4.5.8 mysqlslap — 负载仿真客户端

mysqlslap是一个诊断程序,旨在模拟 MySQL 服务器的客户端负载并报告每个阶段的时间。它的工作方式就好像多个客户端正在访问服务器一样。

像这样调用mysqlslap

mysqlslap [options]

某些选项(例如--create 或)--query使您能够指定包含 SQL 语句的字符串或包含语句的文件。如果您指定一个文件,默认情况下它必须每行包含一个语句。(也就是说,隐式语句定界符是换行符。)使用该 --delimiter选项指定不同的定界符,这使您能够指定跨越多行的语句或将多个语句放在一行上。您不能在文件中包含注释; mysqlslap不理解它们。

mysqlslap分三个阶段运行:

  1. 创建架构、表和可选的任何存储的程序或数据以用于测试。此阶段使用单个客户端连接。

  2. 运行负载测试。这个阶段可以使用很多客户端连接。

  3. 清理(​​断开连接,如果指定则删除表)。此阶段使用单个客户端连接。

例子:

提供您自己的创建和查询 SQL 语句,50 个客户端查询,每个客户端 200 个选择(在一行中输入命令):

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

mysqlslapINT用两列和三列的表构建查询SQL语句VARCHAR。使用五个客户端,每个客户端查询 20 次。不创建表或插入数据(即使用之前测试的模式和数据):

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

告诉程序从指定的文件中加载create、insert、query SQL语句, create.sql文件中有多个以.分隔的建表语句';'和多个以.分隔的insert语句';'。该 --query文件应包含多个由 分隔的查询';'。运行所有加载语句,然后使用五个客户端(每个客户端五次)运行查询文件中的所有查询:

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

mysqlslap支持以下选项,可以在命令行或 选项文件的组中指定[mysqlslap][client]有关 MySQL 程序使用的选项文件的信息,请参阅第 4.2.2.2 节,“使用选项文件”

表 4.18 mysqlslap 选项

选项名称 描述 介绍 弃用
--auto-generate-sql 未在文件中提供或使用命令选项时自动生成 SQL 语句
--auto-generate-sql-add-autoincrement 将 AUTO_INCREMENT 列添加到自动生成的表中
--auto-generate-sql-execute-number 指定自动生成多少查询
--auto-generate-sql-guid-primary 将基于 GUID 的主键添加到自动生成的表中
--auto-generate-sql-load-type 指定测试负载类型
--auto-generate-sql-secondary-indexes 指定要添加到自动生成的表中的二级索引的数量
--auto-generate-sql-unique-query-number 为自动测试生成多少不同的查询
--auto-generate-sql-unique-write-number 为 --auto-generate-sql-write-number 生成多少个不同的查询
--auto-generate-sql-write-number 在每个线程上执行多少行插入
- 犯罪 提交前要执行多少条语句
- 压缩 压缩客户端和服务器之间发送的所有信息 8.0.18
--压缩算法 允许的服务器连接压缩算法 8.0.18
--并发 发出 SELECT 语句时要模拟的客户端数
- 创造 包含用于创建表的语句的文件或字符串
--create-schema 运行测试的模式
--csv 以逗号分隔值格式生成输出
--调试 写调试日志
--调试检查 程序退出时打印调试信息
- 调试信息 程序退出时打印调试信息、内存和 CPU 统计信息
--default-auth 要使用的身份验证插件
--defaults-extra-file 除了通常的选项文件外,还读取命名的选项文件
--defaults-文件 只读命名选项文件
--defaults-group-suffix 选项组后缀值
--分隔符 在 SQL 语句中使用的定界符
- 分离 在每 N 个语句之后分离(关闭并重新打开)每个连接
--启用明文插件 启用明文身份验证插件
- 引擎 用于创建表的存储引擎
--get-server-public-key 从服务器请求 RSA 公钥
- 帮助 显示帮助信息并退出
- 主持人 MySQL 服务器所在的主机
--迭代 运行测试的次数
--登录路径 从 .mylogin.cnf 读取登录路径选项
--no-defaults 不读取选项文件
- 没有下降 不要删除在测试运行期间创建的任何模式
--number-char-cols 如果指定了 --auto-generate-sql,则使用的 VARCHAR 列数
--number-int-cols 如果指定了 --auto-generate-sql,则使用的 INT 列数
--查询次数 将每个客户端限制为大约此数量的查询
--only-打印 不要连接到数据库。mysqlslap 只打印它会做的事情
- 密码 连接到服务器时使用的密码
--密码1 连接到服务器时使用的第一个多因素身份验证密码 8.0.27
--密码2 连接到服务器时使用的第二个多因素身份验证密码 8.0.27
--密码3 连接到服务器时使用的第三个多重身份验证密码 8.0.27
- 管道 使用命名管道连接到服务器(仅限 Windows)
--插件目录 安装插件的目录
- 港口 用于连接的 TCP/IP 端口号
--查询后 包含测试完成后要执行的语句的文件或字符串
--后系统 测试完成后使用 system() 执行的字符串
--预查询 包含运行测试前要执行的语句的文件或字符串
--预系统 在运行测试之前使用 system() 执行的字符串
--print-defaults 打印默认选项
- 协议 使用的传输协议
- 询问 包含用于检索数据的 SELECT 语句的文件或字符串
--server-public-key-path 包含 RSA 公钥的文件的路径名
--shared-memory-base-name 共享内存连接的共享内存名称(仅限 Windows)
- 沉默的 静音模式
- 插座 要使用的 Unix 套接字文件或 Windows 命名管道
--sql模式 为客户端会话设置 SQL 模式
--ssl-ca 包含可信 SSL 证书颁发机构列表的文件
--ssl-capath 包含受信任的 SSL 证书颁发机构证书文件的目录
--ssl证书 包含 X.509 证书的文件
--ssl密码 连接加密的允许密码
--ssl-crl 包含证书吊销列表的文件
--ssl-crlpath 包含证书吊销列表文件的目录
--ssl-fips-模式 客户端是否开启FIPS模式
--ssl-密钥 包含 X.509 密钥的文件
--ssl模式 连接到服务器的所需安全状态
--ssl 会话数据 包含 SSL 会话数据的文件 8.0.29
--ssl-session-data-continue-on-failed-reuse session重用失败是否建立连接 8.0.29
--tls-密码套件 用于加密连接的允许的 TLSv1.3 密码套件 8.0.16
--tls-版本 加密连接允许的 TLS 协议
- 用户 连接到服务器时使用的 MySQL 用户名
--冗长 详细模式
- 版本 显示版本信息并退出
--zstd-压缩级别 使用 zstd 压缩的服务器连接的压缩级别 8.0.18