2

私は4つの異なるデータベースを持つmysqlデータベースを持っています。データベースの1つには、RAMディスクで実行することでメリットが得られる多くの読み取り/書き込みアクティビティがあります。データレイアウトの性質と必要な読み取りの種類により、memcachedはここでは効果的なオプションではありません。したがって、データベースの1つをRAMディスクで実行したいと思います(データの永続性はここでは問題になりません)。

質問:mysqlデータベースの1つのテーブルにのみデータディレクトリを設定する方法はありますか?3つのデータベースにハードドライブ上のデータディレクトリを設定し、もう1つはRAMディスク内のディレクトリを指すようにします。そうでない場合、同じサーバーにmysqlの2つのインスタンスをインストールするにはどうすればよいですか(Ubuntuを使用しています)。

ところで:私はMEMORYエンジンを知っていますが、パフォーマンスはほとんど向上していません(実際にメモリ内で実行されているようには見えません)。

編集:

テーブルのデータディレクトリを指定するように誤って要求しました。私が実際に意味したのは、mysqlインストールで4つのデータベースのうちの1つにデータディレクトリを指定する方法を尋ねることでした。この修正を反映するように投稿が更新されました。

4

2 に答える 2

4

MyISAMテーブルの場合、ステートメントにDATA DIRECTORYINDEX 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

ファイルをRAMディスクに移動し、元の場所へのシンボリックリンクを作成できます。

于 2010-10-17T22:33:45.700 に答える