MySQL Clusterは、最近アクセスされたデータのLRUキャッシュを使用して、インデックスなしの列をディスクのみに保存することをサポートします。ただし、インデックス付きの列は常にメモリ内に保持されます。
MySQL Clusterは、DataMemoryおよびIndexMemoryパラメータに従って、すべてのメモリを事前に割り当てます。基礎となるOSにメモリを動的に要求しません。
つまり、すべてのインデックス付き列をメモリに保持するには、クラスター全体で十分なメモリを構成する必要があります。データセットが十分に大きいため、インデックス付きの列が使用可能なクラスターメモリよりも大きい場合、そのデータセットをクラスターにロードできません。ある時点でスペースが足りなくなり、挿入トランザクションは中止されます。
DataMemoryおよびIndexMemoryを構成するときは、各システムの物理メモリよりもいくらか少なく制限するのが最善です。一部の物理メモリは、OSおよび他のプロセス用に予約する必要があります。
理論的には、MySQL Clusterは、スワップデバイスを介して仮想メモリを使用するように構成できます(たとえば、物理メモリ以上)。ただし、他の回答では、これは設計された使用例ではありません。インメモリランダムアクセスパターンはディスクへのランダムアクセスを引き起こし、システム全体でスワップスラッシングとスローダウンを引き起こすため、インメモリ構造をディスクにスワップすることは通常、最適ではありません。MySQL Clusterで最も可能性の高い結果は、スワッピングデータノードが信号に十分に迅速に応答しないために発生するハートビート障害とクラスター障害です。
集約メモリよりも大きいインデックスを効率的にサポートするには、MySQL Clusterが、ディスクアクセスプロパティに合わせたキャッシュとアクセスパターンを備えたオンディスクインデックスフォーマット(おそらくBツリーなど)をサポートする必要があります。