共有テーブル領域内で raw ディスクパーティションをデータファイルとして利用できます。Windows や一部の Unix システムで raw ディスクを使用すると、ファイルシステムのオーバーヘッドなしに非バッファー入出力を実行できます。それによりおそらくパフォーマンスが改善されますが、raw パーティションを使用する場合としない場合のテストを行い、実際のシステムでもそうなるか確認することをお勧めします。
新しいデータファイルを作成するとき、innodb_data_file_path
内のデータファイルサイズの直後にキーワード
newraw
を置く必要があります。パーティションは、少なくとも指定したサイズと同じである必要があります。ディスク指定の
1M バイト は通常 1,000,000
バイトを意味するのに対して、InnoDB
内の 1M バイトは 1024 × 1024
バイトであることに注意してください。
[mysqld] innodb_data_home_dir= innodb_data_file_path=/dev/hdd1:3Gnewraw;/dev/hdd2:2Gnewraw
次にサーバーを起動するとき、InnoDB
は newraw
キーワードに気付き、新しいパーティションを開始します。しかし、まだ
InnoDB
テーブルを作成したり変更したりしないでください。そうでなければ、サーバーを次に再起動したとき
InnoDB
がパーティションを再開始し、変更がすべて失われます。(安全策として、InnoDB
は newraw
を持つパーティションが指定されたときユーザーがデータを更新することを防ぎます)。
InnoDB
が新しいパーティションを開始したら、サーバーを停止し、データファイル仕様の中の
newraw
を
raw
に変更してください:
[mysqld] innodb_data_home_dir= innodb_data_file_path=/dev/hdd1:3Graw;/dev/hdd2:2Graw
そしてサーバーを再起動させると、InnoDB
は変更を許可します。
Windows 上では、次のようにディスクパーティションを割り当てることができます:
[mysqld] innodb_data_home_dir= innodb_data_file_path=//./D::10Gnewraw
//./
は、物理ドライブにアクセスするための Windows
の構文 \\.\
に対応しています。
raw
ディスクパーティションを利用するとき、MySQL
サーバーを起動するのに利用されるアカウントによって読み込み書き込みアクセスが許可されていることを確認してください。たとえば、サーバーを
mysql
ユーザーとして実行する場合には、パーティションの読み書きアクセス権が
mysql
に付与されている必要があります。--memlock
オプションを指定してサーバーを実行する場合には、root
としてサーバーを実行する必要があるため、パーティションへのアクセス権が
root
に付与されている必要があります。