A Better Cached

6,337 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
6,337
On SlideShare
0
From Embeds
0
Number of Embeds
1,162
Actions
Shares
0
Downloads
28
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

A Better Cached

  1. 1. A Better Cached Cybozu Labs, Inc. Kazuho Oku
  2. 2. Memcachedの利点と欠点 利点 RDBMS の読込負荷低減 / 同時接続数が足りない スケールアウトするキャッシュ 欠点 RDBMS との一貫性維持が不可能 クライアントがキャッシュを変更する限りは不可避 問い合わせが複雑 Memcachedに聞いて、なかったら RDBMS に問い合わ せ データが溢れる Sep 25 2009 A Better Cached 2
  3. 3. 「Memcachedの利点」の前提 RDBMS がスケールアウトしない だから、読込負荷低減が必要 だから、別途「スケールアウトするキャッシュ」 が必要 ↓ Incline & Pacific で RDBMS をスケールアウト可能 必要に応じてshard分割+セカンダリを増設すればいい 残る問題は、同時接続数 あと、やっぱり SQL は遅い Sep 25 2009 A Better Cached 3
  4. 4. 遅いなら捨ててしまえ SQLパーサー (字余り) Sep 25 2009 A Better Cached 4
  5. 5. Mycached mysqldがmemcachedプロトコルを話せ るようにする拡張 テーブルの中身をmemcachedプロトコルで get ただしプライマリキーによる get 専用 書き込みは SQL で Sep 25 2009 A Better Cached 5
  6. 6. Mycached – 図説 mycached http://dev.mysql.com/doc/refman/5.1/en/pluggable-storage-overview.htmlを改変 Sep 25 2009 A Better Cached 6
  7. 7. Mycached デモ Sep 25 2009 A Better Cached 7
  8. 8. Mycached – 実装 1,200行くらい JSON, msgpack, 独自形式によるレスポ ンス Picoevを使用 (I/O イベント駆動ライブ ラリ) MySQLの内部構造は、多数のスレッドによる並行 アクセスにむいていない (というのが定説) イベント駆動ライブラリで同時アクセス数を低減 get は軽いので、データ読込中に他の接続がブロック Sep 25 2009 しても問題ない A Better Cached 8
  9. 9. Mycached – ベンチマーク SQL だと 40,000qps 程度 Sep 25 2009 A Better Cached 9
  10. 10. Mycachedのアプローチにおける問題 負荷が平準化するわけではない Memcachedはハッシュベースなので負荷平準化 Sep 25 2009 A Better Cached 10
  11. 11. よりよいアプローチ? cached と RDBMS 間でクエリの転送と invalidation を実行 somecached queries queries invalidation (trigger-based?) app server RDBMS Sep 25 2009 A Better Cached 11

×