mysqlslap介绍和使用

mysqlslap介绍和使用

mysqlslap是一个MySQL自带的负载仿真工具,它可以在模拟多个客户端对MySQL服务器进行并发执行SQL语句,还可以指定存储引擎。

1. 调用方式

$./mysqlslap [options]

2. 执行步骤

mysqlslap分三个阶段运行

  1. 创建数据库,表以及可选的任何存储程序或数据以用于测试。此阶段使用单个客户端连接。
  2. 运行负载测试。此阶段可以使用许多客户端连接。
  3. 清理(断开连接,删除表–如果指定的话)。此阶段使用单个客户端连接。

3. 测试方式

mysqlslap有三种测试方式

3.1 指定SQL语句

--create:指定表创建语句和插入语句。
--query:指定查询时执行的语句,不一定要是Select语句,可以是任意SQL语句。
--delimiter:指定分隔符为";"
--concurrency: 并发时模拟客户端的数量。可以指定多个值逗号隔开。
--iterations: 测试执行的次数。

使用create和query指定SQL语句,5个客户端并发查询,执行10次。

$./mysqlslap --delimiter=";"
  --create="CREATE TABLE `t1` (intcol1 INT(32) ,intcol2 INT(32) );"
  --query="SELECT * FROM t1" --concurrency=5 --iterations=10

3.2 自动生成SQL

--auto-generate-sql:指定自动生成查询语句,还有其他–auto开头参数可以具体配置查询内容。
--number-int-cols:指定创建表有几个INT列
--number-char-cols: 指定创建表有几个VARCHAR列

自动生成SQL语句测试,使用的表有2个INT列,2个VARCHAR,5个客户端并发查询,执行10次。

$./mysqlslap --concurrency=5 --iterations=10
  --number-int-cols=2 --number-char-cols=2
  --auto-generate-sql

3.3 指定SQL文件

--create--query还可以指定文件,语句以分隔符分开,注意文件中不能包含注释。

--create:指定文件,文件中包含多个以分隔符分隔的语句,表创建语句和插入语句。
--query:指定文件,文件将包含多个以分隔的查询语句,不一定要是Select语句,可以是任意SQL语句。
--delimiter:指定分隔符。

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

4. 选项

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指定测试负载类型,代表要测试的是读还是写还是两者混合的(read,write,update,mixed)
--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每个线程要执行多少行插入
--commit提交前要执行多少条语句
--compress压缩客户端和服务器之间发送的所有信息
--concurrency并发时要模拟的客户端数量
--create包含用于创建表的语句的文件或字符串
--create-schema运行测试的schema
--csv生成以逗号分隔的值格式的输出
--debug Write编写调试日志
--debug-check程序退出时打印调试信息
--debug-info程序退出时打印调试信息,内存和CPU统计信息
--default-auth身份验证插件使用
--defaults-extra-file除了通常的选项文件,还读取命名的选项文件
--defaults-file只读命名的选项文件
--defaults-group-suffix选项组后缀值
--delimiter在SQL语句中使用的定界符
--detach在每条N条语句后分离(关闭并重新打开)每个连接
--enable-cleartext-plugin启用明文身份验证插件
--engine用于创建表的存储引擎
--help显示帮助信息并退出
--hostMySQL服务器所在的主机
--iterations运行测试的次数
--login-path从.mylogin.cnf中读取登录路径选项
--no-defaults不读取选项文件
--no-drop不要删除测试运行期间创建的任何schema
--number-char-cols如果指定了–auto-generate-sql,则要使用的VARCHAR列数
--number-int-cols如果指定了–auto-generate-sql,则要使用的INT列数
--number-of-queries将每个客户端限制为大约此查询数量
--only-print不连接数据库。只打印它会做的事情
--password连接服务器时使用的密码
--pipe使用命名管道连接到服务器(仅Windows)
--plugin-dir安装插件的目录
--port用于连接的TCP / IP端口号
--post-query包含要在测试完成后执行的语句的文件或字符串
--post-system测试完成后使用system()执行的字符串
--pre-query包含要在运行测试之前执行的语句的文件或字符串
--pre-system在运行测试之前使用system()执行的字符串
--print-defaults打印默认选项
--protocol使用的连接协议
--query包含用于检索数据的SELECT语句的文件或字符串
--secure-auth不要以旧(4.1之前)格式向服务器发送密码
--shared-memory-base-name用于共享内存连接的共享内存的名称
--silent静音模式
--socketUnix套接字文件或Windows命名管道使用
--ssl启用连接加密
--ssl-ca包含受信任的SSL证书颁发机构列表的文件
--ssl-capath包含受信任的SSL证书颁发机构证书文件的目录
--ssl-cert包含X.509证书的文件
--ssl-cipher连接加密的允许密码
--ssl-crl包含证书吊销列表的文件
--ssl-crlpath包含证书吊销列表文件的目录
--ssl-key包含X.509密钥的文件
--ssl-mode与服务器连接的所需安全状态
--ssl-verify-server-cert根据服务器证书的公用名身份验证主机名
--user连接服务器时要使用的MySQL用户名
--verbose详细模式
--version显示版本信息并退出

5. 常用参数

--auto-generate-sql:自动生成SQL语句。
--auto-generate-sql-execute-number:指定自动生成多少个查询。
--auto-generate-sql-load-type:指定测试负载类型,read,write,update,mixed。
--number-char-cols: 如果指定了–auto-generate-sql,则要使用的VARCHAR列数。
--number-int-cols: 如果指定了–auto-generate-sql,则要使用的INT列数。
--concurrency: 并发时要模拟的客户端数量。
--iterations: 运行测试的次数。
--create: 包含用于创建表的语句的文件或字符串。
--query: 包含用于检索数据的SELECT语句的文件或字符串。
--delimiter: 在SQL语句中使用的定界符。
--engine: 用于创建表的存储引擎,值可以通过“show engines;”命令查看。
--help: 显示帮助信息并退出。
--no-drop: 不要删除测试运行期间创建的任何schema。schema在MySQL对应的是数据库。
--only-print: 不连接数据库。只打印它会做的事情。可用于查看测试执行的语句。
--post-query: 包含要在测试完成后执行的语句的文件或字符串。SQL语句。
--post-system: 测试完成后使用system()执行的字符串。系统命令。
--pre-query: 包含要在运行测试之前执行的语句的文件或字符串。SQL语句。
--pre-system: 在运行测试之前使用system()执行的字符串。系统命令。

6.查询结果

Benchmark
	Average number of seconds to run all queries: 149.766 seconds
	Minimum number of seconds to run all queries: 149.766 seconds
	Maximum number of seconds to run all queries: 149.766 seconds
	Number of clients running queries: 5
	Average number of queries per client: 100

Average number of seconds to run all queries: 所有查询的平均时间。
Minimum number of seconds to run all queries: 所有查询的最短时间。
Maximum number of seconds to run all queries: 所有查询的最长时间。
Number of clients running queries: 并发模拟客户端数量,对应–concurrency配置值。
Average number of queries per client: 平均每个客户端执行语句数量。自动生成语句时,由--auto-generate-sql-execute-number指定。或者是--number-of-queries指定,平均执行数=--number-of-queries/--concurrency

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值