
Мне было интересно, может ли использование tmpfs улучшить производительность MySQL и насколько, и как это следует сделать? Я предполагаю, что нужно сделать mount -t tmpfs -o size=256M /path/to/mysql/data/DatabaseName
, и использовать базу данных как обычно, но, возможно, я ошибаюсь (я использую только таблицы MyISAM).
Будет ли почасовая rsync между tmpfs /path/to/mysql/data/DatabaseName
и /path/to/mysql/data/DatabaseName_backup
штрафовать производительность? Если да, то как мне сделать резервную копию базы данных tmpfs?
Итак, хороший ли это способ что-то делать, есть ли лучший способ или я просто трачу время зря?
решение1
Я ответил на похожий вопросздеськогда кто-то спрашивал, как загрузить базу данных MySQL в память. В MySQL есть собственный ENGINE среди других потенциальных решений, которые лучше подходят для большинства ситуаций.
Для таблиц MyISAM предложенное вами решение будет функциональным.
Rsync не обязательно должен снижать производительность, но он может, если в вашей системе действительно мало ресурсов, так как высокая загрузка ввода-вывода повлияет на производительность системы в целом. В большинстве случаев я бы сказал, что нет, но единственный способ убедиться — это протестировать.
Решение с ramdisk кажется мне рискованным. В случае отключения питания данные могут быть потеряны, так как ваш rsync не будет работать в реальном времени. Вы можете реплицировать базу данных на подчиненный сервер, который может хранить ее на диске. Запуск MySQL на сервере ramdisk может выполнить scp с этого хоста в ramdisk перед запуском экземпляра.
Если ваш экземпляр MySQL не был хорошо оптимизирован, вы бы заметили существенный прирост производительности. Если бы он был хорошо оптимизирован, я бы предположил, что прирост был бы меньше. Единственный способ убедиться — использовать такие инструменты, какСупер Смак,MySQL-бенчмарк, иsysbenchдля количественной оценки производительности.
Удачи.