Как я могу быть уверен, что вся база данных MySQL загружена в память?

StackOverflow https://stackoverflow.com/questions/144210

  •  02-07-2019
  •  | 
  •  

Вопрос

Я использую сервер 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, а размер данных и индекса ограничен доступной памятью.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top