O MySQL Cluster suporta o armazenamento de colunas não indexadas em disco apenas com um cache LRU de dados acessados recentemente. No entanto, as colunas indexadas são sempre mantidas na memória.
O MySQL Cluster pré-aloca toda a memória, de acordo com os parâmetros DataMemory e IndexMemory. Não solicitará ao SO subjacente mais memória dinamicamente.
Isso significa que você precisa ter configurado memória suficiente no cluster para armazenar todas as colunas indexadas na memória. Se o seu conjunto de dados for grande o suficiente para que as colunas indexadas sejam maiores que a memória disponível do cluster, você não poderá carregar esse conjunto de dados no cluster. Em algum momento, você ficará sem espaço e suas transações de inserção serão abortadas.
Ao configurar o DataMemory e o IndexMemory, é melhor limitar-se a um pouco menos do que a memória física em cada sistema. Alguma memória física deve ser reservada para o sistema operacional e outros processos.
Teoricamente, o MySQL Cluster pode ser configurado para que ele use memória virtual através de um dispositivo de troca (por exemplo, mais que memória física), mas, como as outras respostas afirmam, este não é um caso de uso projetado. Trocar estruturas na memória trocadas para o disco normalmente não é ideal, pois os padrões de acesso aleatório na memória resultam em acesso aleatório ao disco, resultando em troca de trocas e lentidão no sistema. Com o MySQL Cluster, o resultado mais provável é a falha de pulsação e falha de cluster devido a um nó de troca de dados que não responde aos sinais com rapidez suficiente.
Para suportar eficientemente índices com memória maior que a agregada, o MySQL Cluster precisaria suportar formatos de índice em disco (talvez uma árvore B etc.) com padrões de cache e acesso alinhados às propriedades de acesso ao disco.