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

Like this? Share it with your network

Share

Performance Schema @ MySQL Casual #2

  • 12,536 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
12,536
On Slideshare
6,350
From Embeds
6,186
Number of Embeds
14

Actions

Shares
Downloads
50
Comments
1
Likes
9

Embeds 6,186

http://mysql-casual.org 4,510
http://d.hatena.ne.jp 1,146
http://snipsnaptmae.wordpress.com 227
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

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Performance Schema 活用入門 奥野 幹也 @nippondanji mikiya (dot) okuno (at) gmail (dot) com 〜 カジュアルにディープな機能を使いこなそう 〜
  • 2. 免責事項
    • 本プレゼンテーションにおいて示されている見解は、私自身の見解であって、オラクル・コーポレーションの見解を必ずしも反映したものではありません。ご了承ください。
  • 3. Performance Schemaって?
    • 情報を収集するためのツール。
    • 4. MySQL 5.5 から搭載。
    • 5. ストレージエンジンとして実装。
    • 6. きめ細かな情報を採取できる。
    ふ 〜 ん
  • 7. MySQL の状況を知りたい!!
    • MySQL を華麗に使い始めたはいいけれど・・・
      • うまく動かない!
      • 8. 性能が出ない!
      • 9. クエリの結果がおかしい!
      • 10. リソースの消費が多すぎる!
    どうなってるのか 知りたい!知りたい!知りたい!!
  • 11. どうして新しい仕掛けが必要なの? 検査対象を 止めるのは NG
  • 21. MySQL にも 状況を調べる方法が いろいろある。
  • 22. プロセス監視
    • 最も単純な監視
      • プロセスが存在するかどうか。
      • 23. 中身のことは一切わからない。
    • 方法
      • shell> pgrep -x mysqld
      • 24. shell> mysqladmin ping
  • 25. 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
      • 26. shell> mysqladmin status
  • 27. SHOW コマンド
    • 各種情報を表示する。
      • 統計情報
      • 28. 現在のステータス
      • 29. ストアドプロシージャで使えれば・・・
    • 方法
  • 34. INFORMATION_SCHEMA
    • SQL 標準で定義された情報取得方法。
      • SELECT で情報にアクセスできる。
      • 35. スクロールも可。
      • 36. SHOW コマンド涙目。
    • 方法
      • SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'hoge';
  • 37. EXPLAIN
    • クエリの実行計画を表示する。
      • クエリのチューニングに必須。
      • 38. オプティマイザの気持ちが分かる!
    • 方法
      • EXPLAIN SELECT …;
  • 39. SHOW PROFILE
    • クエリがどこで時間を食っていたかが分かる。
      • 個別のセッションで情報採取
      • 40. ほとんど Sending data だよね・・・
    • 使い方
      • set profiling = 1;
      • 41. SELECT …
      • 42. SHOW PROFILE;
  • 43. ログ
    • 時系列で過去に起こったイベントを把握する。
      • 見られるのは履歴のみ。
      • 44. 統計情報など気の利いたものはナシ。
    • 方法
      • エラーログ
      • 45. 一般クエリログ
      • 46. スロークエリログ
      • 47. バイナリログ
  • 48. GDB
    • どんな情報でも見られる
      • 天敵は Optimized away
      • 49. ただし時間が止まる。
      • 50. デバッグ情報必須。
    • 方法
      • gdb -p `pgrep -x mysqld`
  • 51. Dtrace/SystemTap...
    • 動的にプロセスをトレースする。
      • 汎用的な仕組み
      • 52. スクリプトで極め細やかな調整が可能。
      • 53. ただし Solaris や Linux 限定
    • 方法
      • dtrace -p `pgrep -x mysqld` -s script_name
  • 54. DBUG トレース
    • デバッグ版で利用できるトレース機能
      • 関数の呼び出しとリターン
      • 55. その他必要に応じて情報を出力
      • 56. /tmp/mysqld.trace
    • 方法
  • 58. すげーっ! 方法がたくさんある!! けどまだ足りないの?
  • 59. 足りないんです!!
  • 60. PERFORMANCE_SCHEMA!
    • DTrace の SDT に似ている。
    • 61. ソースコードに埋めこまれた Instruments という観測点から情報を収集。
    • 62. 統計情報と履歴を貯めこんで、 SQL を使ってアクセス。
    • 63. ストレージエンジンとして実装。
    • 64. プラットフォームフリー。
    Windows でも OK !
  • 65. オーバーヘッドは?
    • CPU
      • 若干あり。無視できない。
      • 66. 利用中 PC での比較
        • sysbench 12 スレッド read-only
        • 67. 2285.76 per sec vs 1804.77 per sec
    • メモリ
      • 設定やバージョンにもよるが数百 MB 〜
  • 68. 利用シーン マスター スレーブ スレーブ スレーブ Load Balancer P_S APP
  • 69. INFORMATION_SCHEMA との違い
      I_S
    • I_S 専用の枠組みがあり。
    • 70. 都度情報収集
    • 71. SQL 標準
    • 72. 調整する余地なし
      P_S
    • ストレージエンジンとして実装
    • 73. P_S が保存
    • 74. MySQL 固有
    • 75. フィルタ、タイマーなど設定可
  • 76. 設定
    • MySQL 5.5 以上
    • 77. mysql_install_db
    • 78. 設定
      • [mysqld]
      • 79. performance_schema
      • 80. ※ 起動中に変更不可
  • 81. 基本的な使い方 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)
  • 82. mysql-5.6-labs-performance-schema
    • http://labs.mysql.com/
    • 83. MySQL 5.6 で搭載される
    • 84. かも知れない機能が追加されている。
    • 85. ようやく実践的に?
  • 86. カジュアルに使うには? 残念ながら そんな方法はない
  • 87. テーブルの種類
    • setup テーブル … 各種設定を行う。
    • 88. instance テーブル … mutex 等のインスタンス情報。
    • 89. wait event テーブル … 各種操作にかかった時間を記録
    • 90. stage event テーブル … プロファイリング情報
    • 91. statement event テーブル … コマンド実行の履歴
    • 92. table io event テーブル … テーブルごとのストレージエンジンへのリクエスト
    • 93. summary テーブル … 各種イベントの統計情報を記録
  • 94. Summary テーブル命名規約 events_stages_summary_by_host_by_event_name
    • by_host_by_event_name
    • 98. by_instance
    • 99. by_thread_by_event_name
    • 100. by_user_by_event_name
    • 101. by_user_host_by_event_name
    • 102. by_global_by_event_name
    何のサマリーなのか 何でグルーピングしているか
  • 103. 便利なテーブル
    • objects_summary_global_by_type … テーブルへのアクセスにかかる時間の合計、最大、最小、平均値を計測。
    • 104. table_io_waits_summary_by_table … 上記のテーブルより少し詳細な情報を表示できる。
    • 105. events_statements_history_long … 直近のステートメントの履歴を表示(サンプリングに最適!)
  • 106. 数値を見るときのポイント
    • 時間の単位はピコ秒
    • 107. ORDER BY COUNT_STAR DESC
      • タイマーの合計値や平均値でソートしても可
      • 108. pager less
    • よく見るものはビューを定義しておくのもアリ
  • 109. ビューの例 create view top_access_tables as select * from performance_schema. objects_summary_global_by_type order by count_star desc limit 10;
  • 110. デモ
  • 111. まとめ
    • P_S は情報を見るための新たな手段
    • 112. プラットフォームフリーだから Windows でも安心
    • 113. オーバーヘッドが少しあるので使いどころは慎重に。
    • 114. テーブル数が多いのでカジュアルに使うのは難しい。
    • 115. まだまだ発展途上。
    • 116. 便利なビューが欲しくなるかも。
  • 117. Q&A
  • 118. 自己紹介
    • MySQL サポートエンジニア。
    • 119. Blog: http://nippondanji.blogspot.com/
    • 120. Twitter: @nippondanji
    • 121. http://www.facebook.com/mikiya.okuno
    • 122. 著書
      • エキスパートのための MySQL[ 運用 + 管理 ] トラブルシューティングガイド