Mysqlslap - 负载模拟客户端

来自泡泡学习笔记
BrainBs讨论 | 贡献2023年12月19日 (二) 09:50的版本 (创建页面,内容为“ mysqlslap是一个诊断程序,用于模拟MySQL服务器的客户端负载并报告每个阶段的时间。它就像多个客户端访问服务器一样工作。 <br> 调用mysqlslap的方式如下: <pre>mysqlslap [options]</pre> <br> 一些选项,如–create或–query,允许您指定包含SQL语句的字符串或包含语句的文件。如果您指定了一个文件,默认情况下,它必须每行包含一个语句。(也就是说,隐…”)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳到导航 跳到搜索

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


调用mysqlslap的方式如下:

mysqlslap [options]


一些选项,如–create或–query,允许您指定包含SQL语句的字符串或包含语句的文件。如果您指定了一个文件,默认情况下,它必须每行包含一个语句。(也就是说,隐式的语句分隔符是换行符。)使用–delimiter选项指定不同的分隔符,以便您可以指定跨越多行的语句或将多个语句放在单行上。文件中不能包含注释;mysqlslap不理解它们。


mysqlslap分为三个阶段:

  • 创建模式、表和可选的任何存储程序或数据以进行测试。此阶段使用单个客户端连接。
  • 运行负载测试。此阶段可以使用许多客户端连接。
  • 清理(断开连接,如果指定了则删除表)。此阶段使用单个客户端连接。


示例:

提供自己的创建和查询SQL语句,有50个客户端查询200次每个(在单行上输入命令):

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


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

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


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

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