mysqlslap是一个诊断程序,旨在模拟MySQL服务器的客户端负载,并报告每个阶段的时间。它的工作原理就像多个客户机正在访问服务器一样。
调用mysqlslap是这样的:
mysqlslap [选项]
一些选项,例如——创建
或——查询
使您能够指定包含SQL语句的字符串或包含语句的文件。如果指定一个文件,默认情况下,它每行必须包含一条语句。(也就是说,隐式语句分隔符是换行符。)使用——分隔符
选项指定不同的分隔符,该选项使您能够指定跨越多行或将多个语句放在单行上的语句。不能在文件中包含注释;mysqlslap不理解他们。
mysqlslap运行分为三个阶段:
创建模式、表,以及可选的用于测试的任何存储程序或数据。此阶段使用单个客户机连接。
运行负载测试。这个阶段可以使用许多客户机连接。
清理(断开连接,如果指定,删除表)。此阶段使用单个客户机连接。
例子:
提供自己的创建和查询SQL语句,有50个客户端查询和200个选择(在单行输入命令):
mysqlslap——分隔符=”;“——create=" create TABLE a (b int);INSERT INTO a VALUES (23)"——query="SELECT * FROM a"——并发=50——迭代=200
让mysqlslap使用两个表构建查询SQL语句INT
列和三个VARCHAR
列。使用5个客户机每个客户机查询20次。不要创建表或插入数据(也就是说,使用前面测试的模式和数据):
Mysqlslap——并发=5——迭代=20——number-int-cols=2——number-char-cols=3——自动生成sql
命令程序从指定的文件加载创建、插入和查询SQL语句create.sql
文件有多个表创建语句,用“;”
和由分隔的多个插入语句“;”
.的——查询
文件应该包含多个以。分隔的查询“;”
.运行所有的load语句,然后使用5个客户机(每个客户机5次)运行查询文件中的所有查询:
Mysqlslap——并发=5——迭代=5——查询=查询。sql——创建=创建。sql——分隔符=”;“
mysqlslap支持以下选项,这些选项可以在命令行或(mysqlslap)
而且(客户端)
选项文件的分组。有关MySQL程序使用的选项文件的信息,请参见第4.2.2.2节“使用选项文件”.
表4.18 mysqlslap选项
选项名称 | 描述 | 介绍了 | 弃用 |
---|---|---|---|
——auto-generate-sql | 当文件中没有提供SQL语句或使用命令选项时,自动生成SQL语句 | ||
——auto-generate-sql-add-autoincrement | 向自动生成的表中添加AUTO_INCREMENT列 | ||
——auto-generate-sql-execute-number | 指定自动生成的查询的数量 | ||
——auto-generate-sql-guid-primary | 为自动生成的表添加一个基于gui的主键 | ||
——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语句时要模拟的客户机数量 | ||
——创建 | 包含用于创建表的语句的文件或字符串 | ||
——建立图表 | 运行测试的模式 | ||
——csv | 以逗号分隔值格式生成输出 | ||
——调试 | 编写调试日志 | ||
——debug-check | 当程序退出时打印调试信息 | ||
——debug-info | 当程序退出时打印调试信息、内存和CPU统计信息 | ||
——default-auth | 要使用的身份验证插件 | ||
——defaults-extra-file | 除了通常的选项文件外,还读取指定的选项文件 | ||
——defaults-file | 只读命名选项文件 | ||
——defaults-group-suffix | 选项组后缀值 | ||
——分隔符 | 要在SQL语句中使用的分隔符 | ||
——分离 | 在每N条语句之后分离(关闭并重新打开)每个连接 | ||
——enable-cleartext-plugin | 启用明文认证插件 | ||
——引擎 | 用于创建表的存储引擎 | ||
——get-server-public-key | 从服务器请求RSA公钥 | ||
——帮助 | 显示帮助信息并退出 | ||
——主机 | MySQL服务器所在的主机 | ||
——迭代 | 运行测试的次数 | ||
——登录路径 | 从.mylogin.cnf读取登录路径选项 | ||
——已 | 读取无选项文件 | ||
——非放 | 不删除测试运行期间创建的任何模式 | ||
——number-char-cols | 如果指定了——auto-generate-sql,则使用的VARCHAR列的数量 | ||
——number-int-cols | 如果指定了——auto-generate-sql,要使用的INT列的数量 | ||
——查询数量的 | 将每个客户机的查询数量限制在这个范围内 | ||
——只留下冷冰冰的 | 禁止连接数据库。Mysqlslap只打印它本来要做的事情 | ||
——密码 | 连接到服务器时使用的密码 | ||
——管 | 使用命名管道连接到服务器(仅适用于Windows) | ||
——plugin-dir | 安装插件的目录 | ||
——港口 | TCP/IP连接端口号 | ||
——post查询 | 包含要在测试完成后执行的语句的文件或字符串 | ||
——上岗制度 | 字符串,在测试完成后使用system()执行 | ||
——pre-query | 包含要在运行测试之前执行的语句的文件或字符串 | ||
——pre-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-cert | 包含X.509证书的文件 | ||
——ssl cipher | 用于连接加密的允许密码 | ||
——ssl-crl | 包含证书撤销列表的文件 | ||
——ssl-crlpath | 包含证书撤销列表文件的目录 | ||
——ssl-fips-mode | 客户端是否开启FIPS模式 | ||
——ssl密钥 | 包含X.509密钥的文件 | ||
——ssl-mode | 到服务器的连接所需的安全状态 | ||
——tls-ciphersuites | 用于加密连接的允许TLSv1.3加密套件 | 8.0.16 | |
——tls版本 | 加密连接允许的TLS协议 | ||
——用户 | 连接到服务器时使用的MySQL用户名 | ||
——详细 | 详细模式 | ||
——版本 | 显示版本信息并退出 | ||
——zstd-compression-level | 连接到使用zstd压缩的服务器的压缩级别 | 8.0.18 |
——帮助
,-?
显示帮助消息并退出。
——auto-generate-sql
,——一个
当文件中没有提供SQL语句或使用命令选项时,自动生成SQL语句。
——auto-generate-sql-add-autoincrement
添加一个
AUTO_INCREMENT
列到自动生成的表。——auto-generate-sql-execute-number =
N
指定自动生成的查询的数量。
——auto-generate-sql-guid-primary
为自动生成的表添加一个基于gui的主键。
——auto-generate-sql-load-type =
类型
指定测试负载类型。允许的值是
读
(扫描表),写
(插入表),关键
(主键),更新
(更新主键),或者混合
(半插入,半扫描选择)。默认值是混合
.——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。
在提交之前要执行多少语句。默认值是0(没有完成提交)。
——压缩
,- c
如果可能,压缩客户机和服务器之间发送的所有信息。看到第4.2.8节,“连接压缩控制”.
从MySQL 8.0.18开始,这个选项已被弃用。希望它在MySQL的未来版本中被删除。看到配置遗留连接压缩.
连接到服务器的允许的压缩算法。可用的算法与
protocol_compression_algorithms
系统变量。默认值为未压缩的
.有关更多信息,请参见第4.2.8节,“连接压缩控制”.
这个选项是在MySQL 8.0.18中添加的。
——并发=
,N
- c
N
要模拟的并行客户机的数量。
包含用于创建表的语句的文件或字符串。
运行测试的模式。
请注意如果
——auto-generate-sql
选项也被给出,mysqlslap在测试运行结束时删除模式。要避免这种情况,请使用——非放
选择。以逗号分隔值格式生成输出。输出到指定的文件,如果没有指定文件则输出到标准输出。
——调试(=
,debug_options
]- # (
debug_options
]编写调试日志。一个典型的
debug_options
字符串是d:师:啊,
.默认值是file_name
d:师:啊,/ tmp / mysqlslap.trace
.此选项仅在MySQL使用
WITH_DEBUG
.Oracle提供的MySQL版本二进制文件是不使用此选项构建。当程序退出时打印一些调试信息。
此选项仅在MySQL使用
WITH_DEBUG
.Oracle提供的MySQL版本二进制文件是不使用此选项构建。——debug-info
,- t
当程序退出时打印调试信息以及内存和CPU使用统计信息。
此选项仅在MySQL使用
WITH_DEBUG
.Oracle提供的MySQL版本二进制文件是不使用此选项构建。关于使用哪个客户端身份验证插件的提示。看到第6.2.17节,“可插入认证”.
——defaults-extra-file =
file_name
读取该选项文件在全局选项文件之后,但(在Unix上)在用户选项文件之前。如果该文件不存在或无法访问,则会发生错误。如果
file_name
不是绝对路径名,它是相对于当前目录解释的。有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节,“影响选项文件处理的命令行选项”.
只使用给定的选项文件。如果该文件不存在或无法访问,则会发生错误。如果
file_name
不是绝对路径名,它是相对于当前目录解释的。例外:即使
——defaults-file
,读取客户端程序.mylogin.cnf
.有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节,“影响选项文件处理的命令行选项”.
不仅要读通常的选项组,还要读具有通常名称和后缀的组
str
.例如,mysqlslap正常读取(客户端)
而且(mysqlslap)
组。如果该选项为——defaults-group-suffix = _other
,mysqlslap还读(client_other)
而且(mysqlslap_other)
组。有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节,“影响选项文件处理的命令行选项”.
——分隔符=
,str
- f
str
要在文件中提供的SQL语句或使用命令选项时使用的分隔符。
在每个连接之后分离(关闭并重新打开)每个连接
N
语句。默认值为0(连接未分离)。启用
mysql_clear_password
明文验证插件。(见第6.4.1.4节,“客户端明文可插入认证”.)——引擎=
,engine_name
- e
engine_name
用于创建表的存储引擎。
从服务器请求用于基于密钥对的密码交换的RSA公钥。的帐户连接到服务器时,应用此选项
caching_sha2_password
身份验证插件。对于这种帐户的连接,除非请求,否则服务器不会将公钥发送给客户机。对于不使用该插件进行身份验证的帐户,该选项将被忽略。如果不需要基于rsa的密码交换,它也会被忽略,就像客户机使用安全连接连接到服务器时一样。如果
——server-public-key-path =
,并指定有效的公钥文件,它优先于file_name
——get-server-public-key
.有关
caching_sha2_password
插件,看到第6.4.1.2节,“缓存SHA-2可插入认证”.——主机=
,host_name
- h
host_name
连接到给定主机上的MySQL服务器。
——迭代=
,N
-我
N
运行测试的次数。
控件中的命名登录路径中读取选项
.mylogin.cnf
登录路径文件。一个”登录路径”是一个选项组,其中包含指定要连接到哪个MySQL服务器以及要验证为哪个帐户的选项。创建或修改登录路径文件,请使用mysql_config_editor实用程序。看到章节4.6.7,“mysql_config_editor - MySQL配置工具”.有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节,“影响选项文件处理的命令行选项”.
防止mysqlslap避免在测试运行期间删除它创建的任何模式。
不要读取任何选项文件。如果从选项文件中读取未知选项导致程序启动失败,
——已
可用于防止它们被读取。例外的是
.mylogin.cnf
如果文件存在,则在所有情况下都读取它。这允许以比命令行更安全的方式指定密码,即使在某些情况下——已
使用。创建.mylogin.cnf
,可以使用mysql_config_editor实用程序。看到章节4.6.7,“mysql_config_editor - MySQL配置工具”.有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节,“影响选项文件处理的命令行选项”.
的数量
VARCHAR
如果要使用的列——auto-generate-sql
都是确定的。——number-int-cols =
,N
可能是
N
的数量
INT
如果要使用的列——auto-generate-sql
都是确定的。将每个客户机限制为大约这么多查询。查询计数要考虑语句分隔符。例如,如果您调用mysqlslap如下所示,
;
分隔符被识别,以便查询字符串的每个实例被视为两个查询。结果,插入了5行(而不是10行)。mysqlslap——分隔符=”;“——number-of-queries=10——query="use test;insert into t values(null)"
禁止连接数据库。mysqlslap只打印它本来会做的事。
——密码(=
,密码
]- p (
密码
]连接服务器时使用的MySQL帐户密码。“password”为可选参数。如果不是,mysqlslap提示。如果已知,就一定存在没有空间之间的
——密码=
或- p
还有后面的密码。如果没有指定密码选项,默认是不发送密码。在命令行上指定密码应该被认为是不安全的。为了避免在命令行上给出密码,请使用选项文件。看到第6.1.2.1节“密码保安最终用户指引”.
显式指定没有密码,并且mysqlslap不应提示一个,用
——skip-password
选择。——管
,- w
在Windows上,使用命名管道连接到服务器。方法启动服务器时,此选项才适用
named_pipe
系统变量已启用,支持命名管道连接。控件指定的Windows组的成员named_pipe_full_access_group
系统变量。查找插件的目录。的情况下指定此选项
——default-auth
选项用于指定身份验证插件,但是mysqlslap没有找到它。看到第6.2.17节,“可插入认证”.——港口=
,port_num
- p
port_num
对于TCP/IP连接,使用的端口号。
包含要在测试完成后执行的语句的文件或字符串。出于计时目的,不计算此执行。
要执行的字符串
系统()
在测试完成之后。出于计时目的,不计算此执行。包含要在运行测试之前执行的语句的文件或字符串。出于计时目的,不计算此执行。
要执行的字符串
系统()
在运行测试之前。出于计时目的,不计算此执行。打印程序名称和它从选项文件中获得的所有选项。
有关此选项和其他选项文件选项的更多信息,请参见第4.2.2.3节,“影响选项文件处理的命令行选项”.
用于连接到服务器的传输协议。当其他连接参数通常导致使用的协议不是您想要的协议时,它很有用。具体的允许值请参见第4.2.7节,“连接传输协议”.
——查询=
,价值
q
价值
对象的文件或字符串
选择
用于检索数据的语句。——server-public-key-path =
file_name
PEM格式文件的路径名,其中包含服务器用于基于RSA密钥对的密码交换所需的公钥的客户端副本。该选项应用于使用
sha256_password
或caching_sha2_password
身份验证插件。对于没有使用其中一个插件进行身份验证的帐户,该选项将被忽略。如果不使用基于rsa的密码交换,它也会被忽略,就像客户机使用安全连接连接到服务器时的情况一样。如果
——server-public-key-path =
,并指定有效的公钥文件,它优先于file_name
——get-server-public-key
.为
sha256_password
,此选项仅适用于使用OpenSSL构建的MySQL。有关
sha256_password
而且caching_sha2_password
插件,看到第6.4.1.3节“SHA-256可插式认证”,第6.4.1.2节,“缓存SHA-2可插入认证”.——shared-memory-base-name =
的名字
在Windows上,使用共享内存连接到本地服务器时使用的共享内存名称。默认值为
MYSQL
.共享内存名称区分大小写。方法启动服务器时,此选项才适用
shared_memory
已启用支持共享内存连接的系统变量。——沉默
,- s
无声模式。没有输出。
——套接字=
,路径
- s
路径
为连接
本地主机
,即要使用的Unix套接字文件,或者在Windows上是要使用的命名管道的名称。在Windows上,此选项仅适用于服务器是用
named_pipe
系统变量已启用,支持命名管道连接。控件指定的Windows组的成员named_pipe_full_access_group
系统变量。设置客户端会话的SQL模式。
选项以
——ssl
指定是否使用加密连接到服务器,并指示在哪里查找SSL密钥和证书。看到加密连接的命令选项.控制是否在客户端启用FIPS模式。的
——ssl-fips-mode
选项与其他选项不同——ssl
选项,因为它不是用来建立加密连接,而是用来影响允许哪些加密操作。看到第6.8节,“FIPS支持”.xxx
这些
——ssl-fips-mode
值是允许的:从
:禁用FIPS模式。在
:启用FIPS模式。严格的
:使”严格的”FIPS模式。
请注意如果OpenSSL FIPS对象模块不可用,则仅允许的值
——ssl-fips-mode
是从
.在本例中,设置——ssl-fips-mode
来在
或严格的
导致客户端在启动时产生警告,并在非fips模式下运行。——tls-ciphersuites =
ciphersuite_list
使用TLSv1.3的加密连接所允许的密码套件。一个或多个以冒号分隔的密码套件名称的列表。可以以此选项命名的密码套件取决于用于编译MySQL的SSL库。有关详细信息,请参见第6.3.2节“加密连接TLS协议和密码”.
这个选项是在MySQL 8.0.16中添加的。
加密连接所允许的TLS协议。一个或多个以逗号分隔的协议名称的列表。可以以此选项命名的协议取决于用于编译MySQL的SSL库。有关详细信息,请参见第6.3.2节“加密连接TLS协议和密码”.
——用户=
,user_name
- u
user_name
用于连接到服务器的MySQL帐户的用户名。
——详细
,- v
详细的模式。打印更多有关程序的信息。该选项可以多次使用,以增加信息量。
——版本
,- v
显示版本信息并退出。
的服务器连接要使用的压缩级别
zstd
压缩算法。允许的级别从1到22,数值越大表示压缩级别越高。默认的zstd
压缩级别为3。压缩级别设置对不使用的连接没有影响zstd
压缩。有关更多信息,请参见第4.2.8节,“连接压缩控制”.
这个选项是在MySQL 8.0.18中添加的。