Заставить всю базу данных MySQL находиться в памяти - PullRequest
9 голосов
/ 04 февраля 2011

Для выполнения большого количества тестов, которые взаимодействуют с базой данных, я хочу сделать две вещи:

  1. Я хотел бы скопировать схему базы данных без копированияего данные.Я могу сделать это с помощью скрипта, который захватывает операторы CREATE TABLE из каждой таблицы в базе данных.

  2. После создания этой базы данных я бы хотел, чтобы она была на 100% в памяти.

Я застрял на том, как сделать часть 2 - Есть ли более простой способ сделать это, кроме указания механизма каждой таблицы?Каким-то образом это кажется плохим способом сделать это.

Ответы [ 4 ]

11 голосов
/ 04 февраля 2011

Создайте базу данных в /dev/shm (ubuntu | debian), и она будет в ОЗУ.Может увеличивать до 0,5 доступной памяти.

2 голосов
/ 04 февраля 2011

Как сказал dtmilano , вы можете поместить его в смонтированную файловую систему tmpfs. Это не обязательно должен быть / dev / shm, но это единственное место, где обычно монтируется tmpfs.

Вы можете создать новый в любом месте, но:

mount none -t tmpfs /path/to/dir

Если он заполнит всю доступную оперативную память, он будет использовать подкачку в качестве резервной копии.

Поместите его в / etc / fstab для повторного монтирования при загрузке. Просто помните, что это оперативный диск, поэтому он запускается пустым при каждой перезагрузке. Смотри: http://www.howtoforge.com/storing-files-directories-in-memory-with-tmpfs

В качестве альтернативы yuxhuang вы можете создать таблицу типа MEMORY. Он также очищается при перезапуске, хотя определение таблицы остается. Тип таблицы MEMORY имеет несколько ограничений. Например, он использует строки фиксированного размера, поэтому столбцы text и blob недопустимы, а varchar не имеет переменной длины. Смотри: http://dev.mysql.com/doc/refman/5.0/en/memory-storage-engine.html

1 голос
/ 04 февраля 2011
SET storage_engine=MEMORY;

Это будет установка механизма хранения по умолчанию для текущего сеанса.

0 голосов
/ 11 февраля 2016

Если вы используете Windows, в вашем скрипте создания базы данных вы можете создать таблицы, добавив параметр MEMORY, например:

CREATE TABLE IF NOT EXISTS `user` (
  `id` varchar(23) NOT NULL,
  `username` varchar(250) NOT NULL,
  ...
) ENGINE=MEMORY DEFAULT CHARSET=utf8;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...