ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

thumbnail

Labels:  DevOps, MySQL 投稿者:kei

解析まで10分!最強のMySQLチューニングツール「Jet Profiler」

ランサーズでは、現在、Webエンジニアを募集しています。
詳しくは、募集要項をご覧下さい。

こんにちは、keiです。
今回は、MySQLのチューニングに大活躍な「Jet Profiler」というツールをご紹介します。

【2012/12/13 追記】
JetProfilerバージョン3がリリースされ、日本語対応しました。
この日本語化は、ランサーズ上で依頼されました。
http://www.lancers.jp/work/detail/69629
【追記ここまで】

Jet Profilerとは

Jet Profilerは、MySQL向けのクエリアナライザです。
クエリチューニングは、DBパフォーマンスチューニングの中でも重要な作業の1つですが、
Jet Profilerを使えば、その作業をGUIで直感的に行うことができます。

フリーウェアの形態で提供されており、機能限定版であれば無料で利用することができます。
購入する場合は、$499となります。
詳細情報、ダウンロードは公式ページからどうぞ。
http://www.jetprofiler.com/ja/

Jet Profilerの魅力

その1 導入のしやすさ

通常のWindowマシンに、普通のアプリケーションをインストールする感覚でインストールが可能です。
(追記)
ダウンロードページにはMac版、Linux版もあります。

インストール後は、接続情報を入力すればすぐに使い始めることができます。
インストールから接続までの間は10分とかからないでしょう。
※適宜、サーバ側のFWやユーザ権限(GRANT)の設定が必要です。
(追記)
パスワードなしでの接続はできません。
パスワードを設定するか、Jet Plofiler用にユーザを作成する必要があります。

その2 提供情報の豊富さ

クエリの内容や実行回数、Innodb cacheといった多岐に渡る情報を提供してくれます。
また、これらの情報は、表やグラフでグラフィカルに表示され、
情報の切り替え等の各種操作は、全てマウスで行うことが可能です。

使い方

実行結果を記録する

DBに接続ができたら、まずはクエリ情報の記録を始めます。
左上にある赤丸のアイコンをクリックすると記録が始まります。

しばらくアプリケーションをブラウザ上から操作すると、各種情報が記録・表示されはじめます。
thread_r2
上部右側の折れ線グラフは、接続されている、実行中である、実行に時間がかかっているスレッドをそれぞれ表しています。
下部には、アクセスの多いテーブルが円グラフで示されています。

クエリを解析する

下部にある「Top Queries」タブを選択すると、実行回数の多いクエリが表示されます。
クエリの内容やトータルの実行時間などを表形式で俯瞰することができます。
(追記)
無償版では、一部のクエリは見えないようになっています。。
query_r2

Rating欄にある「explain」と書かれたリンクをクリックすると、Explainの実行結果が表示されます。
explain_r2
最上部にJOIN時のサイズやExplain結果のExtra情報が、良し悪しと共に表示されます。
このクエリは、悪いJOINをしているしインデックスも効いていないのでBADだらけです。(笑)
中段には、所謂Explainの実行結果が記載されています。
一番下には、実際のクエリの内容が表示されます。

表示の切り替え

ただでさえ見やすく表示してくるJet Profilerですが、表示方法を色々と変更できます。

折れ線グラフの任意の箇所をドラッグすると、その時間帯のみズームで表示できます。
zoom_r2

折れ線グラフに表示するデータ項目の追加もできます。
adddata_r2

塗りつぶし表示にすることも可能です。
chagedisplay_r2

おわりに

Jet Profilerで確認できる情報は、スロークエリログやSHOW PROCESSLISTで確認できるものですが、それらを横断的にグラフィカル表示できること、マウス操作で簡単に切り替えられることが大きなメリットだと思います。
また、基本的にはクライアント側で動作するため、サーバが重くなることもないそうです。
コマンドラインでの解析に疲れたDB担当者の方、ぜひ導入をご検討下さい!

ランサーズのフェイスブックページでも色々と情報を発信しております。
よろしければいいね!をお願いします!

↓ツイートやはてブはこちらからどうそ↓

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。


【中途採用】
サービスリードエンジニア
テックリード(アーキテクト)
フロントエンドエンジニア
サーバーサイドエンジニア
業務エンジニア(社内システム基盤・基幹システム)

【インターン・学生バイト】
19新卒対象サマーインターン
エンジニアインターン

その他採用情報

関連記事

新規事業開発におけるエンジニアの心得〜失敗事例から学ぶツクラナイ開発〜

tsuyoshi(@numanomanu)です。 先日、エンジニア向けのイベントで登壇して来たので、その時の資料を共有させていただきます。【サポーターズCoLab勉強会】新規事業開発におけるエンジニアの心得。 私自身、昨年、CtoCサービスの新規事業の立ち上げ …

thumbnail
Storing 80 million records in Redis on cheap

Hi, I am Martin and this article is about my journey optimizing Redis as key-value cache for millions of records. We have been usi …

thumbnail
Subversionで413レスポンスが返却された場合の対処

ご無沙汰しております。keiです。 Subversionで、大容量ファイルをコミットする際に遭遇した エラーの対処方法について、共有の意味で記事化させて頂きます。 事象 開発が完了したプロジェクトのソースをまとめてコミットしようとした際に、 ステータスコード4 …