DBの基本として、ORACLE、MS SQL、MYSQLもI/Oは分散させた方が
パフォーマンスが向上する。アプリケーションの改良に比べたらパフォーマンスなどは
それほど変わらないかもしれないが、I/O分散してインデックスをきちんと見直したら
バッチ処理なども1/10の時間で終わることもある。I/O分散はお勧めです。
但しI/O分散は物理的なディスクも分けないとあまり意味は無い。
ディスクを扱うディスクヘッドはディスクに1つなので。(RAIDも同じ)
データはランダム、ログはSequentialなのでI/O自体が違う。


mysql> CREATE TABLE `TABLE_FILEPATH2`
    -> (
    -> `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    -> `comment` varchar(45) NOT NULL,
    -> PRIMARY KEY (`id`),
    -> KEY `idx_id` (`id`)
    -> )
    -> ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
    -> DATA DIRECTORY = '/home/mysql/data2/'
    -> INDEX DIRECTORY = '/home/mysql/index2/';
Query OK, 0 rows affected (0.02 sec)

mysql> show create table TABLE_FILEPATH2\G
*************************** 1. row ***************************
       Table: TABLE_FILEPATH2
Create Table: CREATE TABLE `TABLE_FILEPATH2` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `comment` varchar(45) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 DATA DIRECTORY='/home/mysql/data2/' INDEX DIRECTORY='/home/mysql/index2/'
1 row in set (0.01 sec)

mysql> insert into TABLE_FILEPATH2(comment) values('Insert Data to I/O separate 0001');

tables_myisam_data_index

EXPLAINでINDEXの利用も問題ないことを確認

index_explain

DATA DIRECTORY = ‘/home/mysql/data2/’ の確認

data_dir

INDEX DIRECTORY = ‘/home/mysql/index2/’ の確認

index_file1

※DATA DIRECTORY と INDEX DIRECTORY
Windows では、CREATE TABLE の DATA DIRECTORY オプションと INDEX DIRECTORY
オプションはシンボリックリンクをサポートしていないため無視される。

※Format file(*.frm)は常にディフォルトのDATAディレクトリーに作成される。
DATAファイルとINDEXファイルはオプションで何処にでも配置することが出来る。

※ファイルのパスは、常にフルパスで指定する必要がある。

※–skip-symbolic-linksを指定してMYSQLを起動している場合は利用出来ません。

実際には、ディフォルトのデータディレクトリー(/usr/local/mysq/data)は変更出来ないようで
DATA DIRECTORY と INDEX DIRECTORYを指定すると自動でシンボリックリンクを作成
してくれるようです。なのでシンボリックリンクに対応していないOSでは無理なようです。

ln


15.2.5. サブ分割


5.4.1.3. レプリケーションと DIRECTORY 構文


12.1.8. CREATE TABLE 構文

Comments are closed.

Post Navigation