myisamchkを起動させるとき、メモリの割り当ては重要です。myisamchkはセットされたメモリ関連の変数以上のメモリを使用しません。myisamchkを大きなテーブルで使用する場合、まずどのくらいのメモリを使用するか決定しなければいけません。デフォルトで、修復には3MBくらいしか使用しないように設定されています。さらに大きな値を設定することで、myisamchkのオペレーション速度を上げることができます。例えば、32MB RAMよりも多くメモリがある場合、以下のオプション(他に特定したオプションのほかに)を使用することができます。
shell>myisamchk --sort_buffer_size=16M --key_buffer_size=16M \--read_buffer_size=1M --write_buffer_size=1M ...
--sort_buffer_size=16Mを使用すれば、ほとんどの場合ことたります。
myisamchkはTMPDIR内でテンポラリファイルを使用することに注意してください。もしTMPDIRがメモリファイルシステムを指した場合、メモリエラーから簡単に脱出できます。これが起こった場合、スペースに余裕のあるファイルシステム上のディレクトリを指定するよう、myisamchkを--tmpdir=オプションと使用してください。
path
修復時、myisamchkもディスクスペースを大量に必要とします。
データファイルの大きさを2倍にしてください(オリジナルファイルと複製を作成してください)。--quickで修復を行った場合スペースは必要ありません。この場合、再作成されるのはインデックスファイルのみです。このスペースはオリジナルのデータファイルと同じシステムで必要になります!(コピーはオリジナルと同じディレクトリで作成されます。)
古いインデックスファイルの代わりとなる新しいインデックスファイルのスペース修復オペレーションの始めに古いインデックスファイルは切り捨てられるため、大抵はこのスペースは無視されます。このスペースはオリジナルのインデックスファイルと同じシステムで必要になります!
--recoverあるいは--sort-recoverを使用しているとき、
(しかし--safe-recoverは使用していないとき)ソートバッファのスペースが必要となります。以下の式は必要なスペースの量を生み出します。
(largest_key+row_pointer_length) ×number_of_rows× 2
キーの長さとrow_pointer_lengthをmyisamchk
-dv
tbl_nameでチェックすることができます。このスペースはテンポラリディレクトリにアロケートされています。(TMPDIRか--tmpdir=によって特定されています)。
path
修復中、ディスクスペースが足りなくなった場合、--recoverの代わりに--safe-recoverを使用してみてください。
