如何在mysql中人为地创建一个慢查询?

Gra*_*ace 19 mysql stress-testing

我将在几周内进行演示。这个演示的一部分是用于基本的 mysql 故障排除,包括使用慢查询日志。我已经生成了一个数据库并安装了我们的应用程序,但它是一个干净的数据库,因此很难产生足够的问题。

我尝试了以下方法来获取慢查询日志中的查询:

将慢查询时间设置为 1 秒。

删除了多个索引。

强调系统:

stress --cpu 100 --io 100 --vm 2 --vm-bytes 128M --timeout 1m
Run Code Online (Sandbox Code Playgroud)

使用 wget 编写了一些基本的网页调用脚本。

这些都没有产生缓慢的查询。是否有另一种方法可以人为地对数据库施加压力以产生问题?我没有足够的技能来编写复杂的 Jmeter 或其他负载生成器。我希望也许有一些内置于 mysql 或其他超越压力的 linux 技巧。

Mar*_*ner 38

完全人为,但您可以使用该sleep()功能:

select sleep(10);
Run Code Online (Sandbox Code Playgroud)

在日志中:

Time                 Id Command    Argument
# Time: 110629 16:19:13
# User@Host: mysql[mysql] @ localhost []
# Query_time: 10.000218  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1309389553;
select sleep(10);
Run Code Online (Sandbox Code Playgroud)


HTT*_*500 8

结帐mysqlslap。您可以使用 --query 传递您的 webapp 查询之一,并使用 --concurrency 指定并发客户端。