MySQL: загрузка базы данных в память
Есть ли способ загрузить всю базу данных MySQL в ОЗУ, особенно на сервере en EC2?
- База данных довольно мала (~500 мегабайт)
- У меня достаточно памяти
- Вопросы скорости имеют решающее значение - полученные запросы используются для обслуживания динамической веб-страницы.
Спасибо,
Адам
2 ответа
Вы, конечно, можете загружать индексы в кеш; если у вас есть небольшие таблицы ISAM, которые часто запрашиваются, MySQL, вероятно, также загрузит их в кеш. Вот хорошая вики-статья о производительности по настройке MySQL.
Вы можете хранить базу данных на диске RAM, например, ramfs
, Это может потенциально привести к риску данных, в зависимости от реализации, поэтому вам нужно будет спроектировать, чтобы компенсировать это. Одно из возможных решений - репликация на диск RAM только для чтения ведомого, а данные там могут быть одноразовыми.
MySQL Clustering (механизм NDB) предназначен для хранения данных в памяти. Однако кластеризация MySQL лучше всего подходит для небольших наборов данных, к которым можно обращаться с помощью простых запросов.
В наши дни любимое решение - memcached, но для поддержки технологии требуется архитектура приложения.
Это довольно большой вопрос. Высокая производительность MySQL - это фантастическая книга, в которой рассматриваются реализации MySQL высокого уровня.