memcachedを使うと、なぜ普通にインサートするより高速にインサートできるのでしょうか。
selectによる問い合わせが速いのはキャッシュサーバだからというのはなんとなくわかるのですが、インサートまで速い理由がわかりません。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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総合スコア783
0
ベストアンサー
「普通にインサート」というのは、どこに対するインサートですか?
データベースにINSERT文を発行する場合の事をいっていますか?
投稿2015/03/10 00:32
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/03/11 00:22
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。