InnoDB
のシステムテーブルスペースでは、データファイルとして RAW ディスクパーティションを使用できます。この方法を使用すると、ファイルシステムのオーバーヘッドが発生せずに、Windows 上および一部の Linux と Unix 上でバッファーに入れられない I/O が有効になります。RAW パーティションを使用する場合と使用しない場合でテストを実行して、この変更によって実際にシステム上のパフォーマンスが改善されるかどうかを確認します。
RAW ディスクパーティションを使用する場合は、MySQL サーバーを実行しているユーザー ID がそのパーティションに対する読み取り権限および書き込み権限を持っていることを確認します。たとえば、mysql
ユーザーとしてサーバーを実行する場合は、そのパーティションが mysql
によって読み取り可能および書き込み可能である必要があります。--memlock
オプションを付けてサーバーを実行する場合は、サーバーを root
として実行する必要があるため、パーティションが root
によって読み取り可能および書き込み可能である必要があります。
次で説明する手順には、オプションファイルの変更が伴います。追加情報については、セクション4.2.6「オプションファイルの使用」を参照してください。
Linux および Unix システムでの 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 での RAW ディスクパーティションの割り当て
Windows システムでは、Linux および Unix システムで説明したものと同じ手順および付随するガイドラインが適用されます。ただし、Windows では innodb_data_file_path
の設定がわずかに異なります。
-
新しいデータファイルを作成する際は、
innodb_data_file_path
オプションのデータファイルサイズの直後に、newraw
というキーワードを指定します。[mysqld] innodb_data_home_dir= innodb_data_file_path=//./D::10Gnewraw
//./
は、物理ドライブにアクセスするための Windows の構文\\.\
に対応しています。前述の例では、D:
がパーティションのドライブ文字です。 サーバーを再起動します。
InnoDB
によってnewraw
キーワードが認識され、新しいパーティションが初期化されます。-
InnoDB
によって新しいパーティションが初期化されたら、サーバーを停止し、データファイルの指定でnewraw
をraw
に変更します。[mysqld] innodb_data_home_dir= innodb_data_file_path=//./D::10Graw
サーバーを再起動します。これにより、
InnoDB
で変更を行うことが許可されます。