Что я хотел бы сделать / иметь:
Какое-то приложение / драйвер, который создает диск / раздел RAM, которому фактически присвоена буква диска (например, D :). Эта буква диска должна быть основана на / зеркальном отображении определенного каталога физического каталога (например, C: \ MyDBData).
При запуске приложения / драйвера я ожидаю, что приложение / драйвер прочитает все файлы в каталоге в память и заблокирует их, чтобы предотвратить запись в эти файлы другими приложениями. После этого все файлы будут доступны на RAM-диске. Каждое действие чтения может быть выполнено из памяти, что, как я полагаю, могло бы значительно повысить производительность .. Любая запись должна выполняться «сквозная запись» в физический каталог или, возможно, с буфером максимум 1 секунду. (Так что в случае потери мощности потери будут минимальными.)
Конечно, этому приложению / драйверу потребуется некоторая собственная оперативная память, и это создаст небольшие накладные расходы на загрузку процессора. Тем не менее, я ожидаю значительного повышения производительности.
Я бы хотел использовать это для:
Чтобы ускорить мою 5-гигабайтную базу данных MySQL, я хотел бы переместить все таблицы в свою 8-гигабайтную оперативную память.
И хотя MySQL действительно поддерживает таблицы памяти, ограничения мешают мне достичь этого. Например, поля text / blob не допускаются в таблицах кучи.
Мне все еще остается догадываться, достаточно ли 8 ГБ ОЗУ для 5 ГБ ОЗУ, накладных расходов на упомянутое приложение / драйвер, самого mysqld и остальной части ОС. Но я могу рассмотреть вопрос об обновлении до 12 ГБ или даже 16 ГБ ОЗУ.
У меня вопрос
Я предполагаю, что этот метод уже существует. Как это называется и где мне найти хорошую реализацию? (Желательно с открытым исходным кодом, для Windows)
И хотя советы по Mysql и памяти приветствуются, и, возможно, эта идея, которая у меня есть, не лучший способ решить проблему Mysql, я все же хотел бы изучить вопрос, который у меня есть, о каталогах в RAM.
РЕДАКТИРОВАТЬ: В подобном вопросе я только что прочитал, что это называется кэшированием файловой системы и присутствует в большинстве современных ОС. Но если это правильный путь, как мне указать моей ОС увеличить кэш файловой системы и, в частности, постоянно хранить в этом кеше весь каталог размером 5 ГБ?
ОС и база данных уже включают функции для управления данными в памяти наилучшим образом, чтобы удовлетворить большинство случаев использования без увеличения риска потери данных. Люди гораздо более умные, чем вы или я, работали над этой проблемой, и нет никакого варианта волшебства идти быстрее, который они просто решили отключить для удовольствия. :)
Если у вас нет конкретного варианта использования и вы не знаете, что делаете, вы не добьетесь улучшений лучше, чем просто следуйте лучшим практикам для повышения производительности базы данных.