web-dev-qa-db-ja.com

どのようにしてmysqlで遅いクエリを人工的に作成できますか?

私は数週間でプレゼンテーションを行います。このデモの一部は、スロークエリログの使用を含む、mysqlの基本的なトラブルシューティング用です。データベースを生成してアプリをインストールしましたが、データベースはクリーンであるため、十分な問題を生成することは困難です。

スロークエリログでクエリを取得するために、次のことを試しました。

遅いクエリ時間を1秒に設定します。

複数のインデックスを削除しました。

システムに重点を置いた:

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

Wgetを使用していくつかの基本的なWebページ呼び出しをスクリプト化しました。

これはどれも遅いクエリを生成していません。問題を生成するためにデータベースに人為的にストレスをかける別の方法はありますか?複雑なJmeterやその他の負荷ジェネレーターを作成するのに十分なスキルがありません。おそらく、mysqlに組み込まれた何か、またはストレスを超えた別のLinuxトリックを期待しています。

16
Gray Race

チェックアウト mysqlslap 。 --queryを使用してウェブアプリのクエリの1つを渡し、-concurrencyを使用して同時クライアントを指定できます。

5
HTTP500

完全に人工的ですが、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);
35
Mark Wagner

おそらく、データベースのデチューニングが役立つでしょうか?たとえば、key_buffersサイズを減らしますか?

1
agy