2011-07-22 10 views
3

NoSQLとRDBMSの両方を1つのアプリケーションで使用するのと同じ理由から、NoSQLキャッシュの他にRDBMSキャッシュを持つことは意味があります。なぜmemcachedのようなMySQLを使用しないのですか?

メモリエンジンを使用するすべてのテーブルでMySQLサーバーを使用することを考えていました。

このアプローチには何か警告がありますか?

ここでは明確にするために、アプリケーションの実際のデータストレージではなく、キャッシングの目的でMySQLサーバーを使用することをお勧めします。

答えて

5

メモリテーブルは完全にメモリに格納されているため、非常に高速です。

また、非常に高速で、一時テーブルの目的と参照に最適なハッシュインデックスを使用します。

メモリテーブルは、テーブルレベルのロックを持っているので、並行処理が必要な場合、これは問題

ないトランザクションがある

サーバーがシャットダウンするか、すべての行がテーブル定義かかわら

を失われてクラッシュします同じままであれば、データはすべて消えてしまいます。

あなたはofficial documents on the Memory Engine

をチェックアウトすることができます編集:

メモリストレージエンジンは、キャッシングの目的のための良い候補です。

次は、メモリエンジンが適していることがいくつかある:

  • 検索/マッピングテーブルデータ解析の目的のために、定期的に追加されたデータ
  • キャッシング結果
  • セッション管理
  • 低遅延動作
  • CREATE TEMPORARY TABLEのような他の戦略よりも優れています。

    • それは、TEXTまたはBLOB列をサポートしていません、テーブルはディスク上のMyISAM に変換されます:(それはあなたが必要なものである場合)、メモリテーブルには、いくつかのネガがあります

    持続しますそのようなイベントが発生した場合はとなります。それはあなたがキャッシュが必要な場合は、すべてのメモリエンジンのすべてがあなたのための最良の選択である必要がありそうでない場合は、インデックス/クエリキャッシュ

に割り当て可能なリソースを占めるように、テーブルには、あまりにも多くのデータを保持するべきではありません

  • +0

    私たちはRAM-RAIDについて言えばいいですか? x) –

    +0

    は、memcahdサーバーがクラッシュしたときにすべてのデータが失われるわけではありませんか?私は、 SQLメモリベースのサーバをアプリケーションの実際のデータストアではなく、キャッシュ機構として提案しました。 –

    0

    もう一つの理由は、
    RAMはずっと
    が、ほとんどはメモリを使用すると、$を得た場合

    +0

    理論上はmemcacheを使用して問題は解決されましたが、費用効率が高いため上司を幸せにしません。 –

    +0

    ああ...何のための別の理由? –

    +0

    これは、平均RAMはディスク、コンピュータサイエンス101よりもはるかに高価ですか? – ajreal

    0

    をテラバイトまで-行くせることができ、
    はあなたがテラバイトまでのディスクドライブを持つことができ、ディスクの空き容量に比べて限定されていますMySQLについてはfollowing article、InnoDBの機能には大きな関心が寄せられます。

    これは、あらゆる種類のキャッシュ、メモリエンジンまたはmemcachedよりも優れています。欠点は - それはラム、それの多くが必要です。

    関連する問題