Как я могу быть уверен, что вся БД MySQL загружена в память? - PullRequest
1 голос
/ 27 сентября 2008

Я использую сервер MySQL. Я хотел бы как-то убедиться, что вся БД загружена в ОЗУ, поскольку я слышал, что это будет намного быстрее.

Это правда? и как мне это проверить?

Ответы [ 4 ]

5 голосов
/ 27 сентября 2008

Если вы используете InnoDB, то вы можете установить innodb_buffer_pool_size как минимум таким же большим, как ваши данные и индексы. Затем при доступе к данным они будут кэшироваться в памяти, и все последующие обращения будут осуществляться через память.

Если вы хотите предварительно кэшировать данные, вы можете выполнить некоторые из ваших общих запросов или выполнить полное сканирование таблицы / индекса, чтобы заставить его загрузить все данные в память.

Для mysqld существует опция init-file, которая позволяет серверу автоматически выполнять некоторые команды при запуске, где вы можете включить запросы предварительного кэширования для выполнения.

Имейте в виду, что вам не нужно исчерпывать память, поэтому будьте осторожны с слишком большим значением innodb_buffer_pool_size.

2 голосов
/ 27 сентября 2008

Ну, один из вариантов - использовать ramdrive ... хотя он не постоянный.

http://www.linuxforums.org/forum/misc/670-how-create-ram-drive-linux.html

0 голосов
/ 21 января 2010

Таблицы в оперативной памяти очень быстрые.

Вы можете изменить существующие таблицы, изменив их механизм хранения. Но сделайте резервную копию, если хотите использовать данные после перезапуска сервера.

ALTER TABLE test ENGINE = MEMORY;

Имейте в виду, что таблицы MEMORY не могут содержать столбцы BLOB или TEXT, а размер данных и индекса ограничен доступной памятью.

0 голосов
/ 29 сентября 2008

(только для полноты). Вы можете использовать HEAP в качестве движка стола. Но имейте в виду, что все данные, которые вы помещаете в таблицу HEAP, исчезают при перезагрузке сервера.

...