Performance Schema @ MySQL Casual #2
Upcoming SlideShare
Loading in...5
×
 

Performance Schema @ MySQL Casual #2

on

  • 12,187 views

MySQL Casual #2で使ったスライドです。

MySQL Casual #2で使ったスライドです。

Statistics

Views

Total Views
12,187
Views on SlideShare
6,017
Embed Views
6,170

Actions

Likes
8
Downloads
50
Comments
1

14 Embeds 6,170

http://mysql-casual.org 4508
http://d.hatena.ne.jp 1136
http://snipsnaptmae.wordpress.com 223
http://snip-snap.posterous.com 219
http://webcache.googleusercontent.com 37
http://twitter.com 20
http://ist-dev.private.i-studio.co.jp 13
https://twitter.com 6
http://b.hatena.ne.jp 3
http://mysql-casual.sakura.ne.jp 1
http://us-w1.rockmelt.com 1
http://s.deeeki.com 1
http://www.slideshare.net 1
https://www.google.co.jp 1
More...

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Performance Schema @ MySQL Casual #2 Performance Schema @ MySQL Casual #2 Presentation Transcript

  • Performance Schema 活用入門 奥野 幹也 @nippondanji mikiya (dot) okuno (at) gmail (dot) com 〜 カジュアルにディープな機能を使いこなそう 〜
  • 免責事項
    • 本プレゼンテーションにおいて示されている見解は、私自身の見解であって、オラクル・コーポレーションの見解を必ずしも反映したものではありません。ご了承ください。
  • Performance Schemaって?
    • 情報を収集するためのツール。
    • MySQL 5.5 から搭載。
    • ストレージエンジンとして実装。
    • きめ細かな情報を採取できる。
    ふ 〜 ん
  • MySQL の状況を知りたい!!
    • MySQL を華麗に使い始めたはいいけれど・・・
      • うまく動かない!
      • 性能が出ない!
      • クエリの結果がおかしい!
      • リソースの消費が多すぎる!
    どうなってるのか 知りたい!知りたい!知りたい!!
  • どうして新しい仕掛けが必要なの?
    • 非破壊検査は難しい!
    • 例えば人体の場合
      • 脈拍
      • 聴診器
      • 尿検査
      • X 線撮影
      • 胃カメラ
      • 血液検査
      • CT スキャン
      • MRI
      • :
    検査対象を 止めるのは NG
  • MySQL にも 状況を調べる方法が いろいろある。
  • プロセス監視
    • 最も単純な監視
      • プロセスが存在するかどうか。
      • 中身のことは一切わからない。
    • 方法
      • shell> pgrep -x mysqld
      • shell> mysqladmin ping
  • STATUS コマンド
    • 最も基本的な統計情報が見られる。
    Uptime: 79283 Threads: 1 Questions: 265 Slow queries: 0 Opens: 219 Flush tables: 1 Open tables: 53 Queries per second avg: 0.3
    • 方法
      • mysql> STATUS
      • shell> mysqladmin status
  • SHOW コマンド
    • 各種情報を表示する。
      • 統計情報
      • 現在のステータス
      • ストアドプロシージャで使えれば・・・
    • 方法
      • SHOW GLOBAL VARIABLES
      • SHOW GLOBAL STATUS
      • SHOW SLAVE STATUS
      • SHOW BINARY LOGS
      • :
  • INFORMATION_SCHEMA
    • SQL 標準で定義された情報取得方法。
      • SELECT で情報にアクセスできる。
      • スクロールも可。
      • SHOW コマンド涙目。
    • 方法
      • SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'hoge';
  • EXPLAIN
    • クエリの実行計画を表示する。
      • クエリのチューニングに必須。
      • オプティマイザの気持ちが分かる!
    • 方法
      • EXPLAIN SELECT …;
  • SHOW PROFILE
    • クエリがどこで時間を食っていたかが分かる。
      • 個別のセッションで情報採取
      • ほとんど Sending data だよね・・・
    • 使い方
      • set profiling = 1;
      • SELECT …
      • SHOW PROFILE;
  • ログ
    • 時系列で過去に起こったイベントを把握する。
      • 見られるのは履歴のみ。
      • 統計情報など気の利いたものはナシ。
    • 方法
      • エラーログ
      • 一般クエリログ
      • スロークエリログ
      • バイナリログ
  • GDB
    • どんな情報でも見られる
      • 天敵は Optimized away
      • ただし時間が止まる。
      • デバッグ情報必須。
    • 方法
      • gdb -p `pgrep -x mysqld`
  • Dtrace/SystemTap...
    • 動的にプロセスをトレースする。
      • 汎用的な仕組み
      • スクリプトで極め細やかな調整が可能。
      • ただし Solaris や Linux 限定
    • 方法
      • dtrace -p `pgrep -x mysqld` -s script_name
  • DBUG トレース
    • デバッグ版で利用できるトレース機能
      • 関数の呼び出しとリターン
      • その他必要に応じて情報を出力
      • /tmp/mysqld.trace
    • 方法
      • [mysqld]
      • debug
  • すげーっ! 方法がたくさんある!! けどまだ足りないの?
  • 足りないんです!!
  • PERFORMANCE_SCHEMA!
    • DTrace の SDT に似ている。
    • ソースコードに埋めこまれた Instruments という観測点から情報を収集。
    • 統計情報と履歴を貯めこんで、 SQL を使ってアクセス。
    • ストレージエンジンとして実装。
    • プラットフォームフリー。
    Windows でも OK !
  • オーバーヘッドは?
    • CPU
      • 若干あり。無視できない。
      • 利用中 PC での比較
        • sysbench 12 スレッド read-only
        • 2285.76 per sec vs 1804.77 per sec
    • メモリ
      • 設定やバージョンにもよるが数百 MB 〜
  • 利用シーン マスター スレーブ スレーブ スレーブ Load Balancer P_S APP
  • INFORMATION_SCHEMA との違い
      I_S
    • I_S 専用の枠組みがあり。
    • 都度情報収集
    • SQL 標準
    • 調整する余地なし
      P_S
    • ストレージエンジンとして実装
    • P_S が保存
    • MySQL 固有
    • フィルタ、タイマーなど設定可
  • 設定
    • MySQL 5.5 以上
    • mysql_install_db
    • 設定
      • [mysqld]
      • performance_schema
      • ※ 起動中に変更不可
  • 基本的な使い方 SELECT * FROM performance_schema.objects_summary_global_by_type where object_schema='sbtest'G *************************** 1. row *************************** OBJECT_TYPE: TABLE OBJECT_SCHEMA: sbtest OBJECT_NAME: sbtest COUNT_STAR: 25368838 SUM_TIMER_WAIT: 35553955610133 MIN_TIMER_WAIT: 61953 AVG_TIMER_WAIT: 1401180 MAX_TIMER_WAIT: 21716203284 1 row in set (0.01 sec)
  • mysql-5.6-labs-performance-schema
    • http://labs.mysql.com/
    • MySQL 5.6 で搭載される
    • かも知れない機能が追加されている。
    • ようやく実践的に?
  • カジュアルに使うには? 残念ながら そんな方法はない
  • テーブルの種類
    • setup テーブル … 各種設定を行う。
    • instance テーブル … mutex 等のインスタンス情報。
    • wait event テーブル … 各種操作にかかった時間を記録
    • stage event テーブル … プロファイリング情報
    • statement event テーブル … コマンド実行の履歴
    • table io event テーブル … テーブルごとのストレージエンジンへのリクエスト
    • summary テーブル … 各種イベントの統計情報を記録
  • Summary テーブル命名規約 events_stages_summary_by_host_by_event_name
    • wait
    • stage
    • statement
    • table io
    • by_host_by_event_name
    • by_instance
    • by_thread_by_event_name
    • by_user_by_event_name
    • by_user_host_by_event_name
    • by_global_by_event_name
    何のサマリーなのか 何でグルーピングしているか
  • 便利なテーブル
    • objects_summary_global_by_type … テーブルへのアクセスにかかる時間の合計、最大、最小、平均値を計測。
    • table_io_waits_summary_by_table … 上記のテーブルより少し詳細な情報を表示できる。
    • events_statements_history_long … 直近のステートメントの履歴を表示(サンプリングに最適!)
  • 数値を見るときのポイント
    • 時間の単位はピコ秒
    • ORDER BY COUNT_STAR DESC
      • タイマーの合計値や平均値でソートしても可
      • pager less
    • よく見るものはビューを定義しておくのもアリ
  • ビューの例 create view top_access_tables as select * from performance_schema. objects_summary_global_by_type order by count_star desc limit 10;
  • デモ
  • まとめ
    • P_S は情報を見るための新たな手段
    • プラットフォームフリーだから Windows でも安心
    • オーバーヘッドが少しあるので使いどころは慎重に。
    • テーブル数が多いのでカジュアルに使うのは難しい。
    • まだまだ発展途上。
    • 便利なビューが欲しくなるかも。
  • Q&A
  • 自己紹介
    • MySQL サポートエンジニア。
    • Blog: http://nippondanji.blogspot.com/
    • Twitter: @nippondanji
    • http://www.facebook.com/mikiya.okuno
    • 著書
      • エキスパートのための MySQL[ 運用 + 管理 ] トラブルシューティングガイド