Your SlideShare is downloading. ×
MySQL のチューニングについて考えてみた
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

MySQL のチューニングについて考えてみた

9,311
views

Published on

Published in: Technology

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
9,311
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
16
Comments
0
Likes
3
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. MySQL のチューニングについて考えてみた tokuhirom
  • 2. MySQL は遅いか速いか
    • たぶん、速い。たいていの場合は。
    • でもときどき遅い。
  • 3. 遅い原因の見つけ方
    • Mysql の slow query log をみる
    • 表示に時間かかっているページをみつけて、そこのページの SQL を最適化してみたりする
  • 4. EXPLAIN
  • 5. EXPLAIN を制するものは MySQL を制す
  • 6. EXPLAIN の使い方
    • EXPLAIN SELECT COUNT(*) FROM foo;
    • id: 1
    • select_type: SIMPLE
    • table: NULL
    • type: NULL
    • possible_keys : NULL
    • key : NULL
    • key_len: NULL
    • ref: NULL
    • rows: NULL
    • Extra: Select tables optimized away
  • 7. EXPLAINの見方
    • インデックスがきいてるか、どうか。
    • possible_keys : NULL
    • key : NULL
  • 8. JOIN が遅い。
    • SELECT * FROM a INNER JOIN b (b.a_id = a) …
    • 4 つとか JOIN すると遅い。
  • 9. Using temporary;
    • テンポラリーテーブルを作る。
    • 遅い。
    • ユーザーが見てるページで、これがでてくるクエリを発行したらダメ。
  • 10. JOINを回避する方法
    • SELECT * FROM a INNER JOIN b (b.id=a.b_id);
    • SELECT * FROM a;
    • SELECT * FROM b WHERE id IN (?, ?, ?, ?);
    • に分割する。
  • 11. How to implement
    • my @rows =
    • Proj::Schema::Foo
    • ->fetch_with_cache_multi(@ids);
  • 12. get_multi の考え方
    • Memcached での考え方。
    • 複数キーで一気にひっぱってくる。
  • 13. fetch_with_cache_multi()
    • local $DBIx::Class::ResultSourceHandle::thaw_schema = $c->model_slave;
    • なんかやっとかないといけないらしい。
  • 14. fetch_with_cache_multi
    • get_multi する
    • とれなかった分は
      • IN でひっぱってくる。
      • set_multi する
    • まとめて返す。
  • 15. set_multi?
    • Cache::Memcached::Fast
  • 16. なぜ multi だと速いのか
    • select loop をまわします。。。
  • 17. That’s all.
    • Any questions?