Назад | Перейти на главную страницу

Как избежать нехватки места на RAM-диске?

Я рассматриваю возможность размещения tempdir моей базы данных MySQL на ramdisk под Linux. Причина в том, чтобы обойти Максимум 4 ГБ временных таблиц в памяти в MySQL. Меня беспокоит только то, как избежать ошибок нехватки дискового пространства, если временная таблица на основе MyISAM на виртуальном диске станет больше, чем виртуальный диск? Можно ли каким-то образом создать механизм перелива, в котором размер RAM-диска равен размеру RAM-диска плюс свободное пространство на жестком диске. Если RAM-диск заполнится, все остальное будет записано на жесткий диск.

Подумайте об этом логически и игнорируйте тот факт, что это виртуальный диск с оперативной памятью: вы просите дисковое устройство, которое становится больше, потому что вы пытались сохранить на нем больше данных.

Вы просите благословенного +30 сумка для хранения.
Вы просите Размерное отверстие.
Вы просите ТАРДИС («Он больше внутри»).

Вы просите чего-то, чего не существует. По крайней мере, насколько я когда-либо видел ...


Использование хранилища с поддержкой tmpfs / RAM для временных таблиц - очень элегантный способ обойти ограничение в 4 ГБ. Однако имейте в виду, что заблокированная вами оперативная память не будет доступна MySQL для таких вещей, как SORTing, JOINing и т. д., так что вам понадобится GOBS ОЗУ, чтобы сделать это практичным - вам нужно, чтобы tmpfs были достаточно большими, чтобы содержать столько временных таблиц (предположительно значительного размера), сколько вам нужно в любой момент, и вам все еще нужно иметь достаточно оперативной памяти, чтобы вы не свернули свопинг при выполнении больших запросов (иначе ваша производительность все равно упадет, потому что ЧТО-ТО придется менять местами!).

Более практичным решением может быть умное создание явного (и эффективного) JOINs, которые устраняют необходимость во временных таблицах (если возможно) и сохраняют их как представления. Не зная больше о вашем окружении, я не могу дать вам конкретных рекомендаций, но вы всегда можете спросить сайт DBA с некоторыми основными сведениями о том, что вы делаете, и посмотрите, есть ли у них предложения ...

(Мне очень жаль, что я принес плохие новости, но если это чего-то стоит, я получил удовольствие, набирая этот ответ.)

Лучше всего просто купить SSD 64 ГБ и поставить tempdir на нем и больше ничего. Они дешевые, около 1 доллара за Гб (в продаже), поэтому за ~ 64 доллара и 2 доллара за Гб не в продаже, вы можете получить супербыстрый tempdir что вам не нужно беспокоиться о том, чтобы быть маленьким.

Теоретически я предполагаю, что вы могли бы создать файловую систему JBOD, используя физические тома с RAM-диска и жесткого диска, но я не уверен, что она сначала автоматически заполнит RAM-диск. Этот документ может пролить немного света на эту тему