0
カジュアルなクエリ品質管理  MySQL Casual Talks Vol.3        @mikeda
まきでいきます (;´Д ` ) ハァハァ
自己紹介  @mikeda – インフラエンジニア – 最近作ってるもの→ – MySQL Casual 初参加!  CROOZ – ソーシャルゲーム、ブログ、… – MySQL 200 台くらい。 SSD 増加中 – サービス用 SQL 書い...
今日は 何番煎じかわからないですが、 クエリ解析の話をしようと思います
はじめに
たまにある光景「イベント打つから DB 倍にして!」「チューニングでなんとかなりませんか・・・?」「そんな余裕くぁ w せ drftgy ふじこ lp 」 サーバ増設。その後。。。「クエリなおしたら負荷半分になったわ」(#^ω^) ビキビキ
たまにある DB 負荷推移          大きな改善          ・ SSD 投入          ・ DB 分割    危険ライン         これでしばらく安心や!!!チューニング
たまにある DB 負荷推移            危険ライン      しかしなぜか元に戻る
たまにある DB 負荷推移  V                危険ライン       しかしなぜか元に戻る DB 負荷の V 字回復
なぜ?• クエリ品質の管理ができていない     ↓• 後手後手の対応     ↓• 余計なサーバコスト
サーバエンジニアとして考えるサーバ、 MySQL の監視– CPU 使用率、ディスク IO 、…– スレッド数、各種キャッシュヒット率、…それだけでいいのか?クエリ品質も同じ!– 見える化                 これ大事!– 指標化–...
というわけでその歴史
1.原始の時代
スロークエリ解析• 出てくるのは – バッチ系、ほんとにどうしようもないクエリ• 本命を拾えない – 例えば 1 回 50ms かかってる件数多めクエリ• 本当に問題なクエリがログに現れだした時。。。  既にサービスは落ちている (´ ・ ω ...
職人解析 「サーバ重いっすね」    ↓ 職人が show processlist を連打    ↓ これだ ( ゚ д ゚ ) クワッ !!職人のノリ次第※ 現れる頻度の解析は正しいアプローチ
もっと正確で、だれにでもわかるようにしたい※ ほんとはもっといろいろやってます><
2.全クエリ解析してみよう時代
mk-query-digest でクエリ解析• mk-query-digest   – MaatKIt に入ってるクエリをいい感じに解析してくれるツール   – @marqs :『 MaatKIT の紹介』• tcpdump との組合せ   –...
MaatKit って 最近、 Percona Toolkit になった・・・?  pt-query-digest ・・・?
MaatKit って 最近、 Percona Toolkit になった・・・?  pt-query-digest ・・・?
全体的な概要                   ① 解析スクリプトを送って実行管理サーバApache       毎朝バッチ実行                    DB サーバDAV on                         ...
スクリプト 概要• 概要   • tcpdump でキャプチャ   • mk-query-digest で解析   • 結果を管理サーバにアップ• 細かいところは省略 ブログにアップしてます   http://d.hatena.ne.jp/mi...
スクリプト ちょっと変えてる      ところ• よくある例# tcpdump -i eth0 port 3306 -s 65535 -x -nn -q -tttt -l > dump.txt# mk-query-digest --type t...
ブラウザで確認DB サーバ名のディレクトリが並んでる
ブラウザで確認解析結果が 1 ヶ月分並んでる
ブラウザで確認全体的なクエリ統計   合計実行時間の比率      平均実行時間    EXPLAIN サマリクエリランキング           実行回数            クエリ
ブラウザで確認クエリごとの統計が並ぶ               実行時間、回数              接続元 IP などなど               実行時間分布              サンプルクエリ               ...
そして・・・• これなら自分でもなんとなくわかる!     • クエリ品質の底上げなるか・・・?
しかし・・・• なかなか見てくれないw• 見るのめんどくさい →正しいベンチャーマインド
3.カジュアル化の時代
サマリ作成• 毎日バッチでサマリページを作成• 簡単な指標を作って色付け – 実行時間の比率 – 1回あたりの実行時間 – EXPLAIN 結果
サマリページ 全体見た目がカジュアル(しょぼい)!!!
サマリページ 1ステータス                 詳細解析へのリンク         サマリ解析へのリンク要注意サーバが一目でわかる!
サマリページ 2要注意クエリが一目でわかる!
サマリページ おまけ    EXPLAIN サマリの対応表と    日本男子さんの解説ページへのリンク細やかな気づかい!
ちょっとめんどくさくなくなった!?
そして夢の生活が・・・「赤いのなおしたら負荷下がりました。」「サーバ減らしましょう( ^ ω ^)ニコッ 」「サーバ追加必要ですかね?」「緑でこの負荷ですか、 じゃあ足しましょう( ^ ω ^)ニコッ 」
妄想でした。まとめ• クエリ品質管理をカジュアルにやりたい! – 最低限おさえるべきところが簡単にチェックでき   るように• まだまだ精度が高くない – 画一的に指標化しづらい – MySQL 知識不足• アドバイスお待ちしてます!
終わりです
Upcoming SlideShare
Loading in...5
×

MySQL Casual Talks Vol.3 LT

11,864

Published on

0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
11,864
On Slideshare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
27
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Transcript of "MySQL Casual Talks Vol.3 LT"

  1. 1. カジュアルなクエリ品質管理 MySQL Casual Talks Vol.3 @mikeda
  2. 2. まきでいきます (;´Д ` ) ハァハァ
  3. 3. 自己紹介  @mikeda – インフラエンジニア – 最近作ってるもの→ – MySQL Casual 初参加!  CROOZ – ソーシャルゲーム、ブログ、… – MySQL 200 台くらい。 SSD 増加中 – サービス用 SQL 書いたことない><
  4. 4. 今日は 何番煎じかわからないですが、 クエリ解析の話をしようと思います
  5. 5. はじめに
  6. 6. たまにある光景「イベント打つから DB 倍にして!」「チューニングでなんとかなりませんか・・・?」「そんな余裕くぁ w せ drftgy ふじこ lp 」 サーバ増設。その後。。。「クエリなおしたら負荷半分になったわ」(#^ω^) ビキビキ
  7. 7. たまにある DB 負荷推移 大きな改善 ・ SSD 投入 ・ DB 分割 危険ライン これでしばらく安心や!!!チューニング
  8. 8. たまにある DB 負荷推移 危険ライン しかしなぜか元に戻る
  9. 9. たまにある DB 負荷推移 V 危険ライン しかしなぜか元に戻る DB 負荷の V 字回復
  10. 10. なぜ?• クエリ品質の管理ができていない     ↓• 後手後手の対応     ↓• 余計なサーバコスト
  11. 11. サーバエンジニアとして考えるサーバ、 MySQL の監視– CPU 使用率、ディスク IO 、…– スレッド数、各種キャッシュヒット率、…それだけでいいのか?クエリ品質も同じ!– 見える化 これ大事!– 指標化– 監視
  12. 12. というわけでその歴史
  13. 13. 1.原始の時代
  14. 14. スロークエリ解析• 出てくるのは – バッチ系、ほんとにどうしようもないクエリ• 本命を拾えない – 例えば 1 回 50ms かかってる件数多めクエリ• 本当に問題なクエリがログに現れだした時。。。 既にサービスは落ちている (´ ・ ω ・` ) ショボーン※ ホントは設定次第でいろいろできます><
  15. 15. 職人解析 「サーバ重いっすね」    ↓ 職人が show processlist を連打    ↓ これだ ( ゚ д ゚ ) クワッ !!職人のノリ次第※ 現れる頻度の解析は正しいアプローチ
  16. 16. もっと正確で、だれにでもわかるようにしたい※ ほんとはもっといろいろやってます><
  17. 17. 2.全クエリ解析してみよう時代
  18. 18. mk-query-digest でクエリ解析• mk-query-digest – MaatKIt に入ってるクエリをいい感じに解析してくれるツール – @marqs :『 MaatKIT の紹介』• tcpdump との組合せ – tcpdump のキャプチャファイルを食える – @ryiwo :『 tcpdump & xtrabackup 』• アプリ、 MySQL を触らなくていい!  →(自分には)導入が簡単!!!
  19. 19. MaatKit って 最近、 Percona Toolkit になった・・・?  pt-query-digest ・・・?
  20. 20. MaatKit って 最近、 Percona Toolkit になった・・・?  pt-query-digest ・・・?
  21. 21. 全体的な概要 ① 解析スクリプトを送って実行管理サーバApache 毎朝バッチ実行 DB サーバDAV on Maatkit 導入済みOptions Indexes ② 結果を WEVDAV でアップ③ ブラウザで確認 90 台並列 ※ かぶらないようにアタマに SLEEP
  22. 22. スクリプト 概要• 概要 • tcpdump でキャプチャ • mk-query-digest で解析 • 結果を管理サーバにアップ• 細かいところは省略 ブログにアップしてます   http://d.hatena.ne.jp/mikeda/20111204/1322980203
  23. 23. スクリプト ちょっと変えてる ところ• よくある例# tcpdump -i eth0 port 3306 -s 65535 -x -nn -q -tttt -l > dump.txt# mk-query-digest --type tcpdump dump.txt テキストで保存 pcap 形式で保存• 自分のやつ → ファイルサイズが 1/3 に# tcpdump -i eth0 port 3306 -s 65535 -w qd.pcap# tcpdump -s 65535 -x -nn -q -tttt -l -r qd.pcap | mk-query-digest --type tcpdump --explain "h=127.0.0.1,u=root,p=password” --explain オプション →EXPLAIN 結果がつく!
  24. 24. ブラウザで確認DB サーバ名のディレクトリが並んでる
  25. 25. ブラウザで確認解析結果が 1 ヶ月分並んでる
  26. 26. ブラウザで確認全体的なクエリ統計 合計実行時間の比率 平均実行時間 EXPLAIN サマリクエリランキング 実行回数 クエリ
  27. 27. ブラウザで確認クエリごとの統計が並ぶ 実行時間、回数 接続元 IP などなど 実行時間分布 サンプルクエリ EXPLAIN 結果
  28. 28. そして・・・• これなら自分でもなんとなくわかる!    • クエリ品質の底上げなるか・・・?
  29. 29. しかし・・・• なかなか見てくれないw• 見るのめんどくさい →正しいベンチャーマインド
  30. 30. 3.カジュアル化の時代
  31. 31. サマリ作成• 毎日バッチでサマリページを作成• 簡単な指標を作って色付け – 実行時間の比率 – 1回あたりの実行時間 – EXPLAIN 結果
  32. 32. サマリページ 全体見た目がカジュアル(しょぼい)!!!
  33. 33. サマリページ 1ステータス 詳細解析へのリンク サマリ解析へのリンク要注意サーバが一目でわかる!
  34. 34. サマリページ 2要注意クエリが一目でわかる!
  35. 35. サマリページ おまけ EXPLAIN サマリの対応表と 日本男子さんの解説ページへのリンク細やかな気づかい!
  36. 36. ちょっとめんどくさくなくなった!?
  37. 37. そして夢の生活が・・・「赤いのなおしたら負荷下がりました。」「サーバ減らしましょう( ^ ω ^)ニコッ 」「サーバ追加必要ですかね?」「緑でこの負荷ですか、 じゃあ足しましょう( ^ ω ^)ニコッ 」
  38. 38. 妄想でした。まとめ• クエリ品質管理をカジュアルにやりたい! – 最低限おさえるべきところが簡単にチェックでき るように• まだまだ精度が高くない – 画一的に指標化しづらい – MySQL 知識不足• アドバイスお待ちしてます!
  39. 39. 終わりです
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×