myisamchk
を実行する場合、メモリの配分が重要な問題になります。
myisamchk
は、-O
オプションで指定したサイズ以上のメモリは使用しません。非常に大きなファイルに対して
myisamchk
を使用する場合、メモリの使用量を最初に決めておいてください。修復処理に使用するメモリのデフォルト値は約
3
メガバイトです。大きな値を使用すれば、myisamchk
の処理を高速化できます。たとえば、32
メガバイト以上の RAM
がある場合、以下のようにオプションを指定できます(必要に応じて他のオプションも追加します)。
shell> myisamchk -O sort=16M -O key=16M -O read=1M -O write=1M ...
ほとんどの場合、-O sort=16M
で十分です。
myisamchk
は、TMPDIR
のテンポラリファイルを使用することに注意してください。TMPDIR
がメモリファイルシステムをポイントしていれば、すぐにメモリ不足エラーになります。このエラーが発生する場合には、TMPDIR
を、容量の大きいディレクトリを指すように設定し、myisamchk
を再起動します。
修復時も、myisamchk
は大きなディスク容量を必要とします。
レコードファイルサイズの 2
倍(オリジナルとコピーの分)。--quick
で修復を実行する場合、インデックスファイルだけが再生成されるため、この容量は不要である。オリジナルのレコードファイルと同じディスク上にこの容量が必要である。
古いインデックスファイルと置き換えられる新しいインデックスファイルの容量。古いインデックスファイルは最初に切り捨てられるため、通常、この容量は無視される。 オリジナルのインデックスファイルと同じディスク上にこの容量が必要である。
--recover
または
--sort-recover
を使用する場合(--safe-recover
を使用する場合は含まれない)、ソートバッファ用の容量として
(largest_key + row_pointer_length)*number_of_rows
* 2
が必要である。
キーの長さおよびレコードポインタの長さを確認するには、myisamchk
-dv table
を使用する。
この容量は、テンポラリディスクに割り当てられる(TMPDIR
または --tmpdir=#
で指定)。
修復中にディスク容量に関する問題が発生した場合は、--recover
の代わりに --safe-recover
を使用できます。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.