我将在几周后进行实际演示。此演示的一部分是针对基本 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 的大小?