Your SlideShare is downloading. ×
0
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Performance Schema @ MySQL Casual #2
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Performance Schema @ MySQL Casual #2

11,973

Published on

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

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

Published in: Technology
1 Comment
10 Likes
Statistics
Notes
No Downloads
Views
Total Views
11,973
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
52
Comments
1
Likes
10
Embeds 0
No embeds

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

×