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

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

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

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

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

删除了多个索引。

强调系统:

stress --cpu 100 --io 100 --vm 2 --vm-bytes 128M --timeout 1m

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

这些都没有产生慢查询。还有其他方法可以人为地给数据库施加压力以产生问题吗?我没有足够的技能来编写复杂的 Jmeter 或其他负载生成器。我希望也许有内置在 mysql 中的功能或除压力之外的其他 Linux 技巧。

答案1

查看mysqlslap。您可以使用 --query 传递您的某个 web 应用程序的查询,并使用 --concurrency 指定并发客户端。

答案2

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

select sleep(10);

在日志中:

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);

答案3

也许降低数据库调优可能会有帮助?例如减少 key_buffers 的大小?

相关内容