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');
EXPLAINでINDEXの利用も問題ないことを確認
DATA DIRECTORY = ‘/home/mysql/data2/’ の確認
INDEX DIRECTORY = ‘/home/mysql/index2/’ の確認
※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では無理なようです。