道具を磨くことのススメ 2012/04/19 #mysqlcasual 3        @masudaK
自己紹介• @masudaK• 緑の会社でOperation Engineer• 大規模大好き• ニーハイ好き• 詳しくは #増田チャラい
では、本題
道具に惑わされては  いけない
本質掴む
そのとおりでござる
駄菓子菓子!!
よくある光景
Q) その設定搭載メモリ超えてない?
A) バッファに載ったら終わります   (キリッ
Q) バッファどれくらい使われてる?
A) 分かりません   (キリッ
Q) n時n分からn分まで走る クエリ分析しといてー
A) えっ(カジュアル風に
事前にある便利なもの使おうず(カジュアルに)
ミス減らそうず(カジュアルに)
今から可能な限り  ご紹介(カジュアルに)
設定編
1. mymemcheck
•   最大使用メモリ見積もりを    ご提出•   http://dsas.blog.klab.org/    archives/50860867.html
知ってる人ー ノ
• こんな感じ(詳しくはウェブ(ry• process heap =• innodb_buffer_pool + key_buffer +• max_connections * (sort_buffer +  read_buffer + rea...
2Gマシンで大量設定してみた
2G > 7.940 [G] ... LIMIT OVER!!
2. MySQLTuner
•   https://github.com/    rackerhacker/MySQLTuner-    perl• Performance Metricsっていう    のがある
知ってる人ー ノ
• こんなこと教えてくれる•     query_cache_size (>= 8M)•     thread_cache_size (start at 4)•     innodb_buffer_pool_size (>= 807M)• とかとか
眺めて解析編
• EXPLAIN• EXPLAIN• ADD INDEX• FORCE INDEX• クエリ改善ご提案• 基本中の基本
3. tcpdumpからのー
4. pt-query-digest
@mikedaさんが紹介してくれるはず
5. PROFILING
• SET PROFILE• その実行スレッドにのみ有効• どこに時間かかってるかとか• パッと見で分かりづらい時便利
知ってる人ー ノ
mysql> SET profiling=1;mysql> 適当なクエリ発行
mysql> SHOW PROFILE;+--------------------+----------+| Status             | Duration |+--------------------+----------+| s...
mysql> SHOW PROFILE SOURCE;+--------------------+----------+-----------------------+---------------+-------------+| Status...
6. MySlowTranCapture
• 単発クエリは早いのに、トランザク  ションだと遅いものとか検知してくれ  る• https://github.com/yoshinorim/  MySlowTranCapture
知ってる人ー ノ
松信本購入するしかない。
楽したい編
7. TPC-C
知ってる人ー ノ
カジュアル怖い
• データ作るのめんどい• tpcc_load localhost tpcc1000 root "" 100• ./tpcc_start -h localhost -d tpcc1000 -u root -w 10 -  c 2 -r 10 -...
8. Facebook, onlineschema change tool
知ってる人ー ノ
• http://www.facebook.com/notes/mysql-at-  facebook/online-schema-change-for-mysql/  430801045932• 誰かプロダクトで(ry
情報収集編
9. MySQL Performance     Blogを愛読
愛読してる人ー ノ
シュワルツの笑顔  やばい
10. Baron Schwartz  傾倒してみる
11. カンファレンス  資料を漁る
胸熱
まだまだ色々
終わりに• 道具が全てではない• けど、問題解決の糸口として• プロダクトで使えるものは(ry• アウトプットを是非
最後に
サイバーエージェント一緒に働いてくれる人   募集中
ご清聴ありがとうございました
道具を磨くことのススメ
道具を磨くことのススメ
道具を磨くことのススメ
道具を磨くことのススメ
Upcoming SlideShare
Loading in …5
×

道具を磨くことのススメ

4,626 views
4,548 views

Published on

#mysqlcasual 3のLT資料

------

The materials of #mysqlcasual 3

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
4,626
On SlideShare
0
From Embeds
0
Number of Embeds
2,889
Actions
Shares
0
Downloads
14
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • 道具を磨くことのススメ

    1. 1. 道具を磨くことのススメ 2012/04/19 #mysqlcasual 3 @masudaK
    2. 2. 自己紹介• @masudaK• 緑の会社でOperation Engineer• 大規模大好き• ニーハイ好き• 詳しくは #増田チャラい
    3. 3. では、本題
    4. 4. 道具に惑わされては いけない
    5. 5. 本質掴む
    6. 6. そのとおりでござる
    7. 7. 駄菓子菓子!!
    8. 8. よくある光景
    9. 9. Q) その設定搭載メモリ超えてない?
    10. 10. A) バッファに載ったら終わります (キリッ
    11. 11. Q) バッファどれくらい使われてる?
    12. 12. A) 分かりません (キリッ
    13. 13. Q) n時n分からn分まで走る クエリ分析しといてー
    14. 14. A) えっ(カジュアル風に
    15. 15. 事前にある便利なもの使おうず(カジュアルに)
    16. 16. ミス減らそうず(カジュアルに)
    17. 17. 今から可能な限り ご紹介(カジュアルに)
    18. 18. 設定編
    19. 19. 1. mymemcheck
    20. 20. • 最大使用メモリ見積もりを ご提出• http://dsas.blog.klab.org/ archives/50860867.html
    21. 21. 知ってる人ー ノ
    22. 22. • こんな感じ(詳しくはウェブ(ry• process heap =• innodb_buffer_pool + key_buffer +• max_connections * (sort_buffer + read_buffer + read_rnd_buffer) + max_connections * stack_size
    23. 23. 2Gマシンで大量設定してみた
    24. 24. 2G > 7.940 [G] ... LIMIT OVER!!
    25. 25. 2. MySQLTuner
    26. 26. • https://github.com/ rackerhacker/MySQLTuner- perl• Performance Metricsっていう のがある
    27. 27. 知ってる人ー ノ
    28. 28. • こんなこと教えてくれる•     query_cache_size (>= 8M)•     thread_cache_size (start at 4)•     innodb_buffer_pool_size (>= 807M)• とかとか
    29. 29. 眺めて解析編
    30. 30. • EXPLAIN• EXPLAIN• ADD INDEX• FORCE INDEX• クエリ改善ご提案• 基本中の基本
    31. 31. 3. tcpdumpからのー
    32. 32. 4. pt-query-digest
    33. 33. @mikedaさんが紹介してくれるはず
    34. 34. 5. PROFILING
    35. 35. • SET PROFILE• その実行スレッドにのみ有効• どこに時間かかってるかとか• パッと見で分かりづらい時便利
    36. 36. 知ってる人ー ノ
    37. 37. mysql> SET profiling=1;mysql> 適当なクエリ発行
    38. 38. mysql> SHOW PROFILE;+--------------------+----------+| Status             | Duration |+--------------------+----------+| starting           | 0.000087 || Opening tables     | 0.000063 || System lock         | 0.000009 || init               | 0.000009 || optimizing         | 0.000004 || statistics         | 0.000009 || preparing           | 0.000010 || executing           | 0.002878 || Sending data       | 0.000292 || end                 | 0.000010 || query end           | 0.000003 || closing tables     | 0.000002 || removing tmp table | 0.000008 || closing tables     | 0.000003 || freeing items       | 0.003564 || logging slow query | 0.000009 || cleaning up         | 0.000003 |
    39. 39. mysql> SHOW PROFILE SOURCE;+--------------------+----------+-----------------------+---------------+-------------+| Status             | Duration | Source_function       | Source_file   | Source_line |+--------------------+----------+-----------------------+---------------+-------------+| starting           | 0.000087 | NULL                  | NULL          |        NULL || Opening tables     | 0.000063 | open_tables           | sql_base.cc   |        4837 || System lock        | 0.000009 | mysql_lock_tables     | lock.cc       |         299 || init               | 0.000009 | mysql_select          | sql_select.cc |        2554 || optimizing         | 0.000004 | optimize              | sql_select.cc |         863 || statistics         | 0.000009 | optimize              | sql_select.cc |        1054 || preparing          | 0.000010 | optimize              | sql_select.cc |        1076 || executing          | 0.002878 | exec                  | sql_select.cc |        1823 || Sending data       | 0.000292 | exec                  | sql_select.cc |        2365 || end                | 0.000010 | mysql_select          | sql_select.cc |        2590 |Statusを格納してる箇所の行数まで出してくれるここまで必要なクエリはほとんどないと思(ry
    40. 40. 6. MySlowTranCapture
    41. 41. • 単発クエリは早いのに、トランザク ションだと遅いものとか検知してくれ る• https://github.com/yoshinorim/ MySlowTranCapture
    42. 42. 知ってる人ー ノ
    43. 43. 松信本購入するしかない。
    44. 44. 楽したい編
    45. 45. 7. TPC-C
    46. 46. 知ってる人ー ノ
    47. 47. カジュアル怖い
    48. 48. • データ作るのめんどい• tpcc_load localhost tpcc1000 root "" 100• ./tpcc_start -h localhost -d tpcc1000 -u root -w 10 - c 2 -r 10 -l 30• Sの人向け。hはもっとハード。
    49. 49. 8. Facebook, onlineschema change tool
    50. 50. 知ってる人ー ノ
    51. 51. • http://www.facebook.com/notes/mysql-at- facebook/online-schema-change-for-mysql/ 430801045932• 誰かプロダクトで(ry
    52. 52. 情報収集編
    53. 53. 9. MySQL Performance Blogを愛読
    54. 54. 愛読してる人ー ノ
    55. 55. シュワルツの笑顔 やばい
    56. 56. 10. Baron Schwartz 傾倒してみる
    57. 57. 11. カンファレンス 資料を漁る
    58. 58. 胸熱
    59. 59. まだまだ色々
    60. 60. 終わりに• 道具が全てではない• けど、問題解決の糸口として• プロダクトで使えるものは(ry• アウトプットを是非
    61. 61. 最後に
    62. 62. サイバーエージェント一緒に働いてくれる人 募集中
    63. 63. ご清聴ありがとうございました

    ×