Как я могу быть уверен, что вся база данных MySQL загружена в память?
Вопрос
Я использую сервер MySQL.Я хотел бы как-то убедиться, что вся БД загружается в оперативную память, так как я слышал, что это будет намного быстрее.
Это правда?и как мне это проверить?
Решение
Если вы используете InnoDB, вы можете установить innodb_buffer_pool_size как минимум такого же размера, как ваши данные и индексы.Затем, когда вы получаете доступ к данным, они будут кэшироваться в памяти, и все последующие обращения будут происходить через память.
Если вы хотите предварительно кэшировать данные, вы можете выполнить некоторые из ваших общих запросов или полное сканирование таблицы/индекса, чтобы заставить его загрузить все данные в память.
Для mysqld существует опция init-файла, которая позволяет серверу автоматически выполнять некоторые команды при запуске, куда вы можете включить запросы предварительного кэширования для выполнения.
Имейте в виду, что вы не хотите, чтобы память иссякла, поэтому будьте осторожны, устанавливая слишком большой размер innodb_buffer_pool_size.
Другие советы
Ну, один из вариантов - использовать рамдрайв..хотя это не навсегда.
http://www.linuxforums.org/forum/misc/670-how-create-ram-drive-linux.html
(Только для полноты картины) Вы можете использовать КУЧА как движок таблицы.Но имейте в виду, что любые данные, которые вы помещаете в таблицу HEAP, исчезают при перезагрузке сервера.
Таблицы в оперативной памяти работают очень быстро.
Вы можете изменить существующие таблицы, изменив их механизм хранения.Но сделайте резервную копию, если хотите использовать данные после перезагрузки сервера.
ALTER TABLE test ENGINE = MEMORY;
Имейте в виду, что таблицы MEMORY не могут содержать столбцы BLOB или TEXT, а размер данных и индекса ограничен доступной памятью.