MySQL Cluster RAM要件


8

MySQL 5.1以降、データを完全にメモリ上に置く必要がなくなりました。

インデックス付きの列(インデックス全体の構造)は引き続きメモリ内にある必要があることを読みました(MySQL High Availability、2010、pg。533「MySQL Clusterはすべてのインデックス付きの列をメインメモリに保持する」)。

これに照らして、メモリが不足している場合(つまり、巨大なデータベース(> 100GB、または1TB)、低メモリ構成(2つのデータノード、それぞれ1GBのRAMなど)で実行されている場合)はどうなりますか?


データノードに十分なメインメモリがない場合にどうなるか知りたいので、これを尋ねました。MySQL Clusterはインデックスの一部をセカンダリメモリに保持しませんか?大量のRAMがなく、データベースサイズが巨大な場合はどうなりますか?では、MySQL Clusterは私の選択肢ではありませんか?
gsb 2011

回答:


4

MySQL Clusterは、最近アクセスされたデータのLRUキャッシュを使用して、インデックスなしの列をディスクのみに保存することをサポートします。ただし、インデックス付きの列は常にメモリ内に保持されます。

MySQL Clusterは、DataMemoryおよびIndexMemoryパラメータに従って、すべてのメモリを事前に割り当てます。基礎となるOSにメモリを動的に要求しません。

つまり、すべてのインデックス付き列をメモリに保持するには、クラスター全体で十分なメモリを構成する必要があります。データセットが十分に大きいため、インデックス付きの列が使用可能なクラスターメモリよりも大きい場合、そのデータセットをクラスターにロードできません。ある時点でスペースが足りなくなり、挿入トランザクションは中止されます。

DataMemoryおよびIndexMemoryを構成するときは、各システムの物理メモリよりもいくらか少なく制限するのが最善です。一部の物理メモリは、OSおよび他のプロセス用に予約する必要があります。

理論的には、MySQL Clusterは、スワップデバイスを介して仮想メモリを使用するように構成できます(たとえば、物理メモリ以上)。ただし、他の回答では、これは設計された使用例ではありません。インメモリランダムアクセスパターンはディスクへのランダムアクセスを引き起こし、システム全体でスワップスラッシングとスローダウンを引き起こすため、インメモリ構造をディスクにスワップすることは通常、最適ではありません。MySQL Clusterで最も可能性の高い結果は、スワッピングデータノードが信号に十分に迅速に応答しないために発生するハートビート障害とクラスター障害です。

集約メモリよりも大きいインデックスを効率的にサポートするには、MySQL Clusterが、ディスクアクセスプロパティに合わせたキャッシュとアクセスパターンを備えたオンディスクインデックスフォーマット(おそらくBツリーなど)をサポートする必要があります。


3

MySQLクラスタは、メモリフィットに最適化されたインデックス構造を中心に構築されています。Tツリー。これは、B-treeまたはB + tree構造を使用するMySQLの通常のストレージエンジンとは異なります。これは、いくつかのホットスポット/不均一なアクセスがあると仮定すると、メモリフィットからかなりうまく生き残ることができます(これは通常、安全な仮定です) )。

ある種の概念実証を構築したい場合、RAM不足を補うために大量のスワップを使用することを妨げるものは何もありません。これは十分に機能せず、製品が設計されていないユースケースに使用していることに注意してください。


あなたの答えとフレーザーの答えはとても良いです。しかし、彼が最初に答えたので、私は彼にクレジットを与えます。よろしくお願いします。:)
gsb

いいえ、構いません;)FrazerはMySQLクラスタで動作します。
Morgan Tocker

2

これに照らして、十分なメモリがない場合はどうなりますか

おそらく、十分なメモリがない場合に予想されるものです。ファイルはドライブ上に作成され、ドライブが許す限り高速で実行されます。

MySQLを適切に制限して、他のシステムプロセスに必要なメモリをすべて消費しないようにしてください。


1

基本的に、チェーンは最も弱いリンクと同じくらいの強さです。

プライベート仮想サーバーがセットアップされると(VMWareを使用してESXクラスターがセットアップされます)、クラスター内のすべてのベアメタルサーバーは同じ量のRAMを持っていると想定されます。

MySQL Clusterも同じ種類の子供用手袋で扱う必要があります。いずれかのサーバー(1つでも)のメモリがクラスター内の他のサーバーより少ない場合、それは制限要因のようです。RAMが2GBのサーバーがMySQL Cluster内の他のサーバー(それらがそれぞれ8GBのRAMを持っている場合でも)が最大で2GBを持っているかのように動作する場合、私は驚かないでしょう。

少なくとも、あなたは

補足として、MySQL Clusterには、ストレージノードとして実行されている各サーバーのディスクにデータを保存する機能もあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.