Mysqlslap - 负载模拟客户端
跳到导航
跳到搜索
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=";"