memcacheなどのメモリキャッシュツールですが、MySQLにもmemory式テーブルという似たもの(?)があります。多分どのDBにもあるように思うのですが、memory式テーブルが使われずmemcacheをよく使うのはなぜですか?


早いから、はやっているから、シンプルだから、省メモリ・・・?

質問自体おかしければそれも教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/10/01 11:15:33
  • 終了:2010/10/01 13:15:26

ベストアンサー

id:windofjuly No.2

うぃんど回答回数2625ベストアンサー獲得回数11492010/10/01 12:32:18

ポイント100pt

【1】少量多種の保存に便利なメモリキャッシュ

memcachedはperl/php/python/rubyなど多くのスクリプト言語用のライブラリが既に用意されており、

ライブラリを利用すればスクリプト側だけの対応と処理で済んでしまうため、

運用時のデータベースへの依存度だけでなく、システム設計/作成時点でのデータベースへの依存度も下げることができます

沢山のクライアントを相手にするWebアプリケーションなどではデータベースとのやりとりにかかるコストもバカにならず、

シンプルなメモリキャッシュは重宝します

http://gihyo.jp/dev/feature/01/memcached/0001?page=2

http://gihyo.jp/dev/feature/01/memcached/0001?page=3

 

【2】大量のデータ処理に便利なHEAPテーブル(特に、メモリがある程度潤沢にある場合)

MySQLのHEAPテーブルはメモリ上だけで展開させるもののため、上手に使えば非常に高速な応答が出来るものですが、

これによって高速化する部分はMySQL内での処理であり、アプリケーションとMySQLの間でかかる通信コストそのものは変わらず、

処理するデータが少ない場合の速度アップはそれほどでもなかったりしますので、使い方は実は非常に難しかったりします

http://dev.mysql.com/doc/refman/4.1/ja/heap.html

 

 

上記を組み合わせて考えると、MySQLが使えるメモリ割り当てを調整したり、

MySQLのキャッシュに収まるようなSQLを投げるようにプログラムしてMySQLの動作コストを下げ、

さらに小さい部分ではmemcachedを使って接続コストを下げるというような組み合わせになっていきます

(今回はMySQLで話をしてますけれど、他のデータベースでも考え方はほぼ同じです)

id:MASHMASH

ありがとうございます。

大変参考になります。

2010/10/01 13:04:32

その他の回答(1件)

id:Galapagos No.1

Galapagos回答回数963ベストアンサー獲得回数892010/10/01 11:45:44

ポイント5pt

「MySQLにもmemory式テーブルという似たもの」とは何のことでしょうか?

Memcachedのような機能は標準的に組み込まれていないはずですが。

id:MASHMASH

MEMORY (HEAP) ストレージエンジンのことです。

ディスクでなくメモリに格納するので動作が速いけれど、サーバークラッシュで消えたら戻せないという意味で使いました。

http://dev.mysql.com/doc/refman/5.1/ja/memory-storage-engine.htm...

MEMORY ストレージエンジンはメモリ上に情報を格納するテーブル

2010/10/01 13:01:47
id:windofjuly No.2

うぃんど回答回数2625ベストアンサー獲得回数11492010/10/01 12:32:18ここでベストアンサー

ポイント100pt

【1】少量多種の保存に便利なメモリキャッシュ

memcachedはperl/php/python/rubyなど多くのスクリプト言語用のライブラリが既に用意されており、

ライブラリを利用すればスクリプト側だけの対応と処理で済んでしまうため、

運用時のデータベースへの依存度だけでなく、システム設計/作成時点でのデータベースへの依存度も下げることができます

沢山のクライアントを相手にするWebアプリケーションなどではデータベースとのやりとりにかかるコストもバカにならず、

シンプルなメモリキャッシュは重宝します

http://gihyo.jp/dev/feature/01/memcached/0001?page=2

http://gihyo.jp/dev/feature/01/memcached/0001?page=3

 

【2】大量のデータ処理に便利なHEAPテーブル(特に、メモリがある程度潤沢にある場合)

MySQLのHEAPテーブルはメモリ上だけで展開させるもののため、上手に使えば非常に高速な応答が出来るものですが、

これによって高速化する部分はMySQL内での処理であり、アプリケーションとMySQLの間でかかる通信コストそのものは変わらず、

処理するデータが少ない場合の速度アップはそれほどでもなかったりしますので、使い方は実は非常に難しかったりします

http://dev.mysql.com/doc/refman/4.1/ja/heap.html

 

 

上記を組み合わせて考えると、MySQLが使えるメモリ割り当てを調整したり、

MySQLのキャッシュに収まるようなSQLを投げるようにプログラムしてMySQLの動作コストを下げ、

さらに小さい部分ではmemcachedを使って接続コストを下げるというような組み合わせになっていきます

(今回はMySQLで話をしてますけれど、他のデータベースでも考え方はほぼ同じです)

id:MASHMASH

ありがとうございます。

大変参考になります。

2010/10/01 13:04:32

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません