myisamchk は、テーブルの修復操作 (--recover
オプションまたは --safe-recover
オプションなどのオプションが指定された場合に実行される操作) のために次のオプションをサポートします。
-
.MYD
ファイルのバックアップを
として作成します。file_name
-time
.BAK -
文字セットがインストールされているディレクトリ。セクション10.5「文字セットの構成」を参照してください。
-
テーブルのチェックサム情報を修正します。
-
--data-file-length=
,len
-D
len
データファイルの最大長 (データファイルが「いっぱい」になったとき再作成する場合)。
-
データファイルからできるかぎりの行をリカバリしようとする修復を実行します。これは通常、ガベージ行も大量に検出します。このオプションは、切羽詰まった状況でなければ使用しないでください。
このオプションの説明は、テーブルチェックオプションも参照してください。
出力形式の説明は、セクション4.6.3.5「myisamchk によるテーブル情報の取得」を参照してください。
-
中止せず、古い中間ファイル (
のような名前のファイル) を上書きします。tbl_name
.TMD -
myisamchk では、オプション値はどのインデックスを更新するかを示すビット値です。オプション値の各バイナリビットがテーブルインデックスに対応します。最初のインデックスはビット 0 です。オプション値が 0 の場合、すべてのインデックスの更新が無効になります。より高速な挿入を行うために使用できます。無効化されたインデックスは myisamchk -r を使用して再度有効化できます。
-
シンボリックリンクをたどりません。通常、myisamchk はシンボリックリンクが示すテーブルを修復します。MySQL 4.0 以降のバージョンでは修復操作中にシンボリックリンクを削除しないため、このオプションは 4.0 には存在しません。
-
myisamchk が指定された長さより大きい行を保存するためにメモリーを割り当てられない場合、行をスキップします。
-
-r
および-n
と同じテクニックを使用しますが、異なるスレッドを使用してすべてのキーを並行して作成します。これはベータ品質のコードです。自己責任でご使用ください。 -
データファイルではなくインデックスファイルのみを変更することで、より高速な修復を実現します。このオプションを 2 回指定することで、重複キーの場合に myisamchk を使用して強制的に元のデータファイルを変更させることができます。
-
一意ではない一意なキー以外のすべてを修復できる修復を実行します (これは
MyISAM
テーブルではきわめてまれなエラーです)。テーブルをリカバリするには、このオプションをまず試してください。--safe-recover
は、myisamchk が、--recover
を使用してテーブルをリカバリできないとレポートする場合のみ使用するようにしてください。(非常にまれではありますが、--recover
が失敗した場合、データファイルはそのままです。)メモリー容量に余裕がある場合、
myisam_sort_buffer_size
の値を増やすようにしてください。 -
すべての行を順に読み取り、検出された行に基づいてすべてのインデックスツリーを更新する古いリカバリ方法を使用して修復します。この方法は
--recover
よりも格段に遅くなりますが、--recover
では対応できないいくつかのまれなケースに対応できます。また、このリカバリ方法は--recover
よりもはるかに少ないディスクスペースを使用します。通常、まず--recover
を使用して修復し、--recover
が失敗した場合にかぎって--safe-recover
を使用するようにしてください。メモリー容量に余裕がある場合、
key_buffer_size
の値を増やすとよいでしょう。 -
テーブルインデックスで使用する文字セットを変更します。このオプションは、MySQL 5.0.3 で
--set-collation
に置換されました。 -
テーブルインデックスのソートに使用する照合順序を指定します。照合順序名の初めの部位が文字セット名を示しています。
-
一時ファイルのサイズが非常に大きくなっても、キーの解決にソートを使用することを myisamchk に強制します。
-
一時ファイルの保存に使用するディレクトリのパス。設定しない場合、myisamchk は
TMPDIR
環境変数の値を使用します。--tmpdir
に、一時ファイルの作成にラウンドロビン方式で順に使用する、ディレクトリパスのリストを設定できます。ディレクトリ名の間の区切り文字は、Unix ではコロン (「:
」)、Windows ではセミコロン (「;
」) です。 -
myisampack でパックされたテーブルをアンパックします。