2

我有一个包含 4 个不同数据库的 mysql 数据库。1 个数据库有很多读/写活动,这些活动将受益于在 ramdisk 上运行。由于数据布局的性质和所需读取的类型,memcached 在这里不是一个有效的选择。因此,我想在 ramdisk 中运行其中一个数据库(数据持久性在这里不是问题)。

问题:有没有为mysql数据库中的一个表设置数据目录?我希望 3 个数据库在我的硬盘驱动器上有一个数据目录,另一个指向 ramdisk 中的一个目录。如果没有,我怎么能在同一台服务器上安装两个 mysql 实例(我使用的是 Ubuntu)。

顺便说一句:我知道 MEMORY 引擎,但这几乎不能提高性能(似乎并没有真正在内存中运行)。

编辑:

我不小心要求为表指定数据目录。我的真正意思是询问如何在 mysql 安装中为 4 个数据库中的 1 个指定数据目录。该帖子已更新以反映此更正。

4

2 回答 2

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
于 2010-10-17T22:35:44.587 回答
1

您可以将文件移动到 ramdisk 并创建指向其原始位置的符号链接。

于 2010-10-17T22:33:45.700 回答