mysql と drizzle の負荷テストツール「skyload」が凄い!

tmaesakaさんがやってくれました。

ずいぶん前からSQLベンチマークを測定するのに使いやすいプログラムないかなーと思ってました。個人的にはmysqlslapというのを使ってたのですが、幾らか気に入らない所があったりコマンドラインオプションが複雑で毎回 --help を読んだりしていました。余計な機能なんかなくて、指定したSQLを高速にくりかえしてくれる物が欲しいなぁって思ってたんです。

とあるIRCでこの前、tmaesakaさんから「いま作ってる」という話を聞いて、いろいろ要望を言ってたんですが、ついさっきチュートリアルが公開されました。速いw

名前はskyload。とても小さく、実装コードだと800行程度です。しかもオプションが少ないので使い方が単純です。試しに適当な INSERT の速度を測ってみました。

$ skyload --server=localhost --mysql --concurrency=4 --rows=1000 --table='create table foo (id int unsigned not null auto_increment primary key,message varchar(255) not null) engine=innodb' --insert='insert into foo (message) values (%rand)'
Skyload Worker[0] Progress:
.......... (250)

Concurrent Connections : 4
Total Time to INSERT   : 1.57514 secs
Rows Loaded            : 1000

引数が直感的なので、SQL に慣れた人ならイメージ沸くかと思います。

すばらしい! こういうのが欲しかったんです。ただまだ出来上がったばっかりですし機能は少ないです。でも SQL を大量に書いたファイルを skyload に渡して、そのベンチマークを測定するといった、かゆいところに手が届くツールに育って行くらしいです。

skyloadはDrizzle、またはMySQLプロトコルを扱えるデータベースサーバに対して複数のコネクションを並列してロードテストを容易に行えるツールです。MySQL標準のmysqlslapに比べ、ロードテストの設定を細かく、かつ直感的に行える事を目標にしています。

Google Code Archive - Long-term storage for Google Code Project Hosting.

ありがたやありがたや。

参考: Big Sky :: ヘッダファイルだけでC++から使えるJSONパーサ「picojson」が凄い!