人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

●質問者: MASHMASH
●カテゴリ:ウェブ制作
✍キーワード:dB MySQL いるか キャッシュ シンプル
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Galapagos
●5ポイント

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

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

◎質問者からの返答

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

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

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

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


2 ● うぃんど
●100ポイント ベストアンサー

【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で話をしてますけれど、他のデータベースでも考え方はほぼ同じです)

◎質問者からの返答

ありがとうございます。

大変参考になります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ