mysqlslap-压测客户端

mysqlslap-压测客户端

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[password]
    • 密码。选项和密码之间不能有空格。使用 –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-check

    MySQL 的二进制发行版不是以此选项构建的。

    • 程序退出时,打印一些调试信息。仅当 MySQL 是使用 WITH_DEBUG 构建的时,此选项才可用。
  • –debug-info, -T

    MySQL 的二进制发行版不是以此选项构建的。

    • 程序退出时,打印调试信息以及内存和 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
        • (默认) 一半插入,一半扫描表
  • –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
      • 叠加数
  • 用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 列的数量
  • 5个客户端,每个客户端执行5次
    mysqlslap --concurrency=5
      --iterations=5 --query=query.sql --create=create.sql
      --delimiter=";"
    
    • –query
      • 指定查询文件
    • –create
      • 指定建表语句和插入语句的文件

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注