2010-10-17 1 views
2

У меня есть база данных mysql с 4 различными базами данных. 1 из баз данных имеет много операций чтения/записи, которые выиграют от запуска в ramdisk. Из-за характера компоновки данных и типов считываемых данных memcached не является эффективным вариантом здесь. Поэтому я хотел бы запустить одну из баз данных в ramdisk (постоянство данных здесь не проблема).Задание каталога данных для конкретной базы данных в mysql

Вопрос: Есть ли способ установить каталог данных только для одной таблицы в базе данных mysql? Я хочу, чтобы 3 базы данных имели каталог данных на моем жестком диске, а другой указал на каталог в ramdisk. Если нет, как я могу установить два экземпляра mysql на одном сервере (я использую Ubuntu).

Btw: Мне известно о механизме MEMORY, но это едва улучшает производительность (по-видимому, не работает в памяти).

EDIT:

Я случайно попросил указать каталог данных для таблицы. Фактически я имел в виду спросить, как указать каталог данных для 1 из 4 баз данных в установке mysql. Сообщение было обновлено, чтобы отразить эту коррекцию.

ответ

4

Для таблиц MyISAM, вы можете просто представить положение о DATA DIRECTORY & INDEX DIRECTORY в вашем CREATE TABLE заявления (если вы разделите ваш стол, вы должны установить его на раздел я считаю).

$ mkdir /tmp/datadir 
$ sudo chown mysql:mysql /tmp/datadir/ 
$ mysql 
mysql> use test; 
Reading table information for completion of table and column names 
You can turn off this feature to get a quicker startup with -A 

Database changed 
mysql> create table otherlocation (id int) ENGINE=MyISAM, DATA DIRECTORY='/tmp/datadir', INDEX DIRECTORY='/tmp/datadir'; 

Query OK, 0 rows affected (0.01 sec) 
mysql> Bye 
$ ls -lah /tmp/datadir/ 
total 496K 
drwxr-xr-x 2 mysql mysql 4.0K Oct 18 00:57 . 
drwxrwxrwt 32 root root 484K Oct 18 00:55 .. 
-rw-rw---- 1 mysql mysql 0 Oct 18 00:57 otherlocation.MYD 
-rw-rw---- 1 mysql mysql 1.0K Oct 18 00:57 otherlocation.MYI 
+0

Не могли бы вы показать мне, как будет выглядеть правильный запрос? Каждый раз, когда я пытаюсь это сделать, он говорит, что не выбрана база данных. – user396404

+0

Добавлен пример командной строки с требованиями (существующий каталог, правильное владение, надлежащий ДВИГАТЕЛЬ) – Wrikken

+0

Насколько это полно? Это как файл 'foo.c' /' foo.h', где вы можете перетаскивать мышью? Могу ли я сделать долю 'nfs''/tmp/datadir' и поделиться на любой машине Linux или же есть общие файлы, хранящиеся где-то в другом месте только для этой единственной машины? – puk

1

Вы можете переместить файлы в ramdisk и создать символическую ссылку в исходное местоположение.