質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
memcached

memcached は、汎用の分散型メモリキャッシュサーバです。

Q&A

解決済

2回答

1951閲覧

memcachedのインサート処理はなぜ速くなるのですか

imamoto_browser

総合スコア1161

memcached

memcached は、汎用の分散型メモリキャッシュサーバです。

0グッド

1クリップ

投稿2015/03/09 20:23

memcachedを使うと、なぜ普通にインサートするより高速にインサートできるのでしょうか。

selectによる問い合わせが速いのはキャッシュサーバだからというのはなんとなくわかるのですが、インサートまで速い理由がわかりません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ディスクI/Oの話は出たようですので、プロトコルのお話を。

おそらくRDBMSと比較されていると思うのですが、memcachedのプロトコルはSQLと比べて非常にシンプルです。
http://research.sakura.ad.jp/2010/03/26/kvs-memcached/

--- appendコマンド ---
append name 0 0 3
123

SQLの場合、
・DBにログイン
→ID,PWは正しいか
→接続元ホストは許可されているか
・与えられたSQL文は何を実行するSQLか
→シンタックスチェックも行う
・ログインしたユーザーの権限で実行できるSQLか
・どのテーブル、カラムが対象か
→テーブルは存在するか
→カラムは存在するか
・各種チェック
→主キー等の制限に反していないか
→データ型と挿入する値に差異がないか
・関数の実行
といった複雑な処理を行いながらデータを追記します(ここに上げたのはほんの一部です)。INSERTはシンプルなようで非常に複雑な動作も可能ですので、そういった条件分岐が多数あります。
http://dev.mysql.com/doc/refman/5.6/en/insert.html

ところが、memcachedでは上記に上げたような内容をほとんどすっ飛ばし、単純に書き込むだけなのです。こういった前動作の省略によるスピードへの貢献は非常に大きいです。

同様の考えで作られたのがDeNA社の「HandlerSocket」だったり、
MySQLで最近はmemcachedのプロトコルに対応しているといった流れなんだと思います。
http://engineer.dena.jp/2010/08/handlersocket-plugin-for-mysql.html
http://thinkit.co.jp/story/2014/01/08/4716

投稿2015/03/11 08:00

編集2015/03/11 08:12
munyaX

総合スコア783

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

「普通にインサート」というのは、どこに対するインサートですか?
データベースにINSERT文を発行する場合の事をいっていますか?

投稿2015/03/10 00:32

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/03/11 00:22

それは、データベースは普通HDDをストレージとして読み書きしていますが、memcachedの名前の通りメモリをストレージとして読み書きしているからですね。 メモリのアクセス速度はHDDに比べて10万倍位速いので。 その代わり、メモリ上で読み書きしているので、システムを停止した、システムがダウンした等の場合、全部データがなくなってしまいますが。割り当て領域がいっぱいになると、古い物から自動的に削除されていきますし。 ですからあくまで正のデータが他にある時のキャッシュなわけです。 RDBS(MySQLなど)でも、HEAPテーブルを作ってそれにアクセスする場合はずっと速くなるでしょうが、仕様が単純なmemchachedの方がやはり速いでしょうね。 その代わり、RDBSではレコードのロックとかが出来るので不整合を起こさないことができますが、memcachedでは一部だけデータが古いなどの不整合が起きえますね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問