MySQL Cluster поддерживает хранение неиндексированных столбцов на диске только с LRU-кэшем недавно полученных данных. Однако индексированные столбцы всегда хранятся в памяти.
MySQL Cluster предварительно выделяет всю память в соответствии с параметрами DataMemory и IndexMemory. Он не будет запрашивать у базовой ОС больше памяти динамически.
Это означает, что вам необходимо сконфигурировать достаточно памяти в кластере для хранения всех индексированных столбцов в памяти. Если ваш набор данных достаточно большой, чтобы индексированные столбцы превышали доступную память кластера, вы не сможете загрузить этот набор данных в кластер. В какой-то момент вам не хватит места, и ваши транзакции вставки будут прерваны.
При настройке DataMemory и IndexMemory лучше ограничить себя несколькими объемами физической памяти в каждой системе. Некоторая физическая память должна быть зарезервирована для ОС и других процессов.
Теоретически MySQL Cluster может быть настроен так, чтобы он использовал виртуальную память через устройство подкачки (например, больше, чем физическая память), но, как указано в другом ответе, это не предназначенный для использования вариант. Перестановка структур в памяти на диск обычно неоптимальна, так как шаблоны произвольного доступа в памяти приводят к произвольному доступу к диску, что приводит к перегрузке и замедлению перестановки в системе. С MySQL Cluster наиболее вероятным результатом является сбой сердцебиения и сбой кластера из-за перестановки узла данных, не отвечающего на сигналы достаточно быстро.
Для эффективной поддержки индексов, превышающих совокупную память, MySQL Cluster должен был бы поддерживать форматы индексов на диске (возможно, дерево B и т. Д.) С шаблонами кэширования и доступа, согласованными со свойствами доступа к диску.