SlideShare une entreprise Scribd logo
1  sur  39
カジュアルなクエリ品質管理

  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 との組合せ
   – tcpdump のキャプチャファイルを食える
   – @ryiwo :『 tcpdump & xtrabackup 』



• アプリ、 MySQL を触らなくていい!
  →(自分には)導入が簡単!!!
MaatKit って
 最近、 Percona Toolkit になった・・・?
  pt-query-digest ・・・?
MaatKit って
 最近、 Percona Toolkit になった・・・?
  pt-query-digest ・・・?
全体的な概要
                   ① 解析スクリプトを送って実行
管理サーバ
Apache       毎朝バッチ実行                    DB サーバ
DAV on                                  Maatkit 導入済み
Options Indexes     ② 結果を WEVDAV でアップ



③ ブラウザで確認




                   90 台並列
                   ※ かぶらないようにアタマに SLEEP
スクリプト 概要
• 概要
   • tcpdump でキャプチャ
   • mk-query-digest で解析
   • 結果を管理サーバにアップ


• 細かいところは省略
 ブログにアップしてます
   http://d.hatena.ne.jp/mikeda/20111204/1322980203
スクリプト ちょっと変えてる
      ところ
• よくある例
# 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 結果がつく!
ブラウザで確認




DB サーバ名のディレクトリが並んでる
ブラウザで確認




解析結果が 1 ヶ月分並んでる
ブラウザで確認


全体的なクエリ統計

   合計実行時間の比率      平均実行時間    EXPLAIN サマリ




クエリランキング


           実行回数            クエリ
ブラウザで確認
クエリごとの統計が並ぶ
               実行時間、回数
              接続元 IP などなど



               実行時間分布

              サンプルクエリ


               EXPLAIN 結果
そして・・・
• これなら自分でもなんとなくわかる! 
    

• クエリ品質の底上げなるか・・・?
しかし・・・
• なかなか見てくれないw

• 見るのめんどくさい
 →正しいベンチャーマインド
3.カジュアル化の時代
サマリ作成
• 毎日バッチでサマリページを作成

• 簡単な指標を作って色付け
 – 実行時間の比率
 – 1回あたりの実行時間
 – EXPLAIN 結果
サマリページ 全体




見た目がカジュアル(しょぼい)!!!
サマリページ 1




ステータス
                 詳細解析へのリンク


         サマリ解析へのリンク



要注意サーバが一目でわかる!
サマリページ 2




要注意クエリが一目でわかる!
サマリページ おまけ
    EXPLAIN サマリの対応表と
    日本男子さんの解説ページへのリンク




細やかな気づかい!
ちょっとめんどくさくなくなった!?
そして夢の生活が・・・
「赤いのなおしたら負荷下がりました。」
「サーバ減らしましょう( ^ ω ^)ニコッ 」

「サーバ追加必要ですかね?」
「緑でこの負荷ですか、
 じゃあ足しましょう( ^ ω ^)ニコッ 」
妄想でした。まとめ
• クエリ品質管理をカジュアルにやりたい!
 – 最低限おさえるべきところが簡単にチェックでき
   るように

• まだまだ精度が高くない
 – 画一的に指標化しづらい
 – MySQL 知識不足


• アドバイスお待ちしてます!
終わりです

Contenu connexe

Tendances

第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理Seiichiro Ishida
 
Clojureによるログ収集と解析
Clojureによるログ収集と解析Clojureによるログ収集と解析
Clojureによるログ収集と解析Yoshitaka Kawashima
 
20131128 perl beginners_11_profiler
20131128 perl beginners_11_profiler20131128 perl beginners_11_profiler
20131128 perl beginners_11_profilerSyun Fuji
 
My sql casual talks vol.6
My sql casual talks vol.6My sql casual talks vol.6
My sql casual talks vol.6Satoshi Suzuki
 
意識の低い自動化
意識の低い自動化意識の低い自動化
意識の低い自動化greenasparagus
 
Casual Compression on MongoDB
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDBmoai kids
 
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所Koji Nakamura
 
Gruntを導入しよう!の話
Gruntを導入しよう!の話Gruntを導入しよう!の話
Gruntを導入しよう!の話Koji Nakamura
 
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2学 松崎
 
カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明Masakazu Matsushita
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, CodereadingHiro Yoshioka
 
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴Akihiro Kuwano
 
Serverspecの本気をみるのです
Serverspecの本気をみるのですServerspecの本気をみるのです
Serverspecの本気をみるのですhayabusa333
 
TIME_WAITに関する話
TIME_WAITに関する話TIME_WAITに関する話
TIME_WAITに関する話Takanori Sejima
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会Yasutaka Hamada
 

Tendances (20)

第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
第1回Webサーバ勉強会 - 212-223 ブラウザマッチ処理
 
Clojureによるログ収集と解析
Clojureによるログ収集と解析Clojureによるログ収集と解析
Clojureによるログ収集と解析
 
20131128 perl beginners_11_profiler
20131128 perl beginners_11_profiler20131128 perl beginners_11_profiler
20131128 perl beginners_11_profiler
 
My sql casual talks vol.6
My sql casual talks vol.6My sql casual talks vol.6
My sql casual talks vol.6
 
意識の低い自動化
意識の低い自動化意識の低い自動化
意識の低い自動化
 
How To Drink Wsgi
How To Drink WsgiHow To Drink Wsgi
How To Drink Wsgi
 
Casual Compression on MongoDB
Casual Compression on MongoDBCasual Compression on MongoDB
Casual Compression on MongoDB
 
JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所JS開発におけるTDDと自動テストツール利用の勘所
JS開発におけるTDDと自動テストツール利用の勘所
 
Clack meetup #1 lt
Clack meetup #1 ltClack meetup #1 lt
Clack meetup #1 lt
 
Gruntを導入しよう!の話
Gruntを導入しよう!の話Gruntを導入しよう!の話
Gruntを導入しよう!の話
 
MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2MySQL Casual Talks in Fukuoka vol.2
MySQL Casual Talks in Fukuoka vol.2
 
カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明カジュアルにMongo dbのbackup機能説明
カジュアルにMongo dbのbackup機能説明
 
Reactjs
ReactjsReactjs
Reactjs
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
Varnish
VarnishVarnish
Varnish
 
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
 
Serverspecの本気をみるのです
Serverspecの本気をみるのですServerspecの本気をみるのです
Serverspecの本気をみるのです
 
TIME_WAITに関する話
TIME_WAITに関する話TIME_WAITに関する話
TIME_WAITに関する話
 
Maatkitの紹介
Maatkitの紹介Maatkitの紹介
Maatkitの紹介
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会
 

Similaire à MySQL Casual Talks Vol.3 LT

tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1Ryosuke IWANAGA
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews, Inc.
 
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Kei IWASAKI
 
動画共有ツール
動画共有ツール動画共有ツール
動画共有ツールtamtam180
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とToru Takahashi
 
マルチデバイス時代の高速化
マルチデバイス時代の高速化マルチデバイス時代の高速化
マルチデバイス時代の高速化Shin Takeuchi
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
お金をかけないDBチューニング
お金をかけないDBチューニングお金をかけないDBチューニング
お金をかけないDBチューニングKazuya Sato
 
Sql database のご紹介
Sql database のご紹介Sql database のご紹介
Sql database のご紹介Oda Shinsuke
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナーTakahiro Iwase
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費Tatsumi Akinori
 
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLBYuki KAN
 
ここからはじめる SQL Server の状態取得
ここからはじめる SQL Server の状態取得ここからはじめる SQL Server の状態取得
ここからはじめる SQL Server の状態取得Masayuki Ozawa
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニングKensuke Nagae
 
Rubyにおけるトレース機構の刷新
Rubyにおけるトレース機構の刷新Rubyにおけるトレース機構の刷新
Rubyにおけるトレース機構の刷新Koichi Sasada
 
Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証BrainPad Inc.
 

Similaire à MySQL Casual Talks Vol.3 LT (20)

tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテムSmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
SmartNews TechNight Vol5 : SmartNews AdServer 解体新書 / ポストモーテム
 
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
 
動画共有ツール
動画共有ツール動画共有ツール
動画共有ツール
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
EmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤とEmbulkとDigdagとデータ分析基盤と
EmbulkとDigdagとデータ分析基盤と
 
マルチデバイス時代の高速化
マルチデバイス時代の高速化マルチデバイス時代の高速化
マルチデバイス時代の高速化
 
Haikara
HaikaraHaikara
Haikara
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
お金をかけないDBチューニング
お金をかけないDBチューニングお金をかけないDBチューニング
お金をかけないDBチューニング
 
Sql database のご紹介
Sql database のご紹介Sql database のご紹介
Sql database のご紹介
 
20120405 setsunaセミナー
20120405 setsunaセミナー20120405 setsunaセミナー
20120405 setsunaセミナー
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
Fluentd meetup #2
Fluentd meetup #2Fluentd meetup #2
Fluentd meetup #2
 
PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費PGXのレスポンスとリソース消費
PGXのレスポンスとリソース消費
 
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
17 E-5 震災とHackとクラウドと ━ URIベースのCSLB
 
ここからはじめる SQL Server の状態取得
ここからはじめる SQL Server の状態取得ここからはじめる SQL Server の状態取得
ここからはじめる SQL Server の状態取得
 
Maatkit で MySQL チューニング
Maatkit で MySQL チューニングMaatkit で MySQL チューニング
Maatkit で MySQL チューニング
 
Rubyにおけるトレース機構の刷新
Rubyにおけるトレース機構の刷新Rubyにおけるトレース機構の刷新
Rubyにおけるトレース機構の刷新
 
Sparkパフォーマンス検証
Sparkパフォーマンス検証Sparkパフォーマンス検証
Sparkパフォーマンス検証
 

Plus de Tomohiro Ikeda

Plus de Tomohiro Ikeda (8)

AWS Casual2 LT
AWS Casual2 LTAWS Casual2 LT
AWS Casual2 LT
 
qpsutdy 201307 LT
qpsutdy 201307 LTqpsutdy 201307 LT
qpsutdy 201307 LT
 
qpstudy3周年記念LT大会
qpstudy3周年記念LT大会qpstudy3周年記念LT大会
qpstudy3周年記念LT大会
 
インフラの話
インフラの話インフラの話
インフラの話
 
Zabbix study5lt
Zabbix study5ltZabbix study5lt
Zabbix study5lt
 
Zabbix study
Zabbix studyZabbix study
Zabbix study
 
Q-1 Twitterグランプリ (qpstudy04 LT)
Q-1 Twitterグランプリ (qpstudy04 LT)Q-1 Twitterグランプリ (qpstudy04 LT)
Q-1 Twitterグランプリ (qpstudy04 LT)
 
Webサーバ勉強会
Webサーバ勉強会Webサーバ勉強会
Webサーバ勉強会
 

MySQL Casual Talks Vol.3 LT