MyISAM
テーブルの振る舞いを変えるために、次の mysqld オプションを使用できます。 追加情報については セクション5.1.7「サーバーコマンドオプション」を参照してください。
表 16.3 「MyISAM オプションおよび変数リファレンス」
名前 | コマンド行 | オプションファイル | システム変数 | ステータス変数 | 変数スコープ | 動的 |
---|---|---|---|---|---|---|
bulk_insert_buffer_size | はい | はい | はい | 両方 | はい | |
concurrent_insert | はい | はい | はい | グローバル | はい | |
delay_key_write | はい | はい | はい | グローバル | はい | |
have_rtree_keys | はい | グローバル | いいえ | |||
key_buffer_size | はい | はい | はい | グローバル | はい | |
log-isam | はい | はい | ||||
myisam-block-size | はい | はい | ||||
myisam_data_pointer_size | はい | はい | はい | グローバル | はい | |
myisam_max_sort_file_size | はい | はい | はい | グローバル | はい | |
myisam_mmap_size | はい | はい | はい | グローバル | いいえ | |
myisam_recover_options | はい | はい | はい | グローバル | いいえ | |
myisam_repair_threads | はい | はい | はい | 両方 | はい | |
myisam_sort_buffer_size | はい | はい | はい | 両方 | はい | |
myisam_stats_method | はい | はい | はい | 両方 | はい | |
myisam_use_mmap | はい | はい | はい | グローバル | はい | |
tmp_table_size | はい | はい | はい | 両方 | はい |
次のシステム変数は MyISAM
テーブルの振る舞いに影響を与えます。 追加情報については セクション5.1.8「サーバーシステム変数」を参照してください。
-
bulk_insert_buffer_size
大量挿入の最適化に使用されるツリーキャッシュのサイズです。
注記これは、スレッド当たりの制限値です。
-
delay_key_write=ALL
MyISAM
テーブルへの書き込みの間にキーバッファーをフラッシュしないでください。注記これを行う場合、
MyISAM
テーブルの使用中に別のプログラムから (別の MySQL サーバーから、myisamchk を使用して、など)、このテーブルにアクセスしないでください。 そのようにすると、インデックスが破損するおそれがあります。--external-locking
を利用しても、このリスクは回避されません。 -
myisam_max_sort_file_size
MyISAM
インデックスの再作成時 (REPAIR TABLE
、ALTER TABLE
またはLOAD DATA
) に MySQL で使用できる一時ファイルの最大サイズ。 ファイルサイズがこの値より大きい場合、さらに低速なキーキャッシュを代わりに使用してインデックスが作成されます。 値はバイト単位で指定されます。 -
myisam_recover_options=
mode
クラッシュした
MyISAM
テーブルの自動リカバリにモードを設定します。 -
myisam_sort_buffer_size
テーブルのリカバリ時に使用されるバッファーのサイズを設定します。
myisam_recover_options
システム変数を設定して mysqld を起動すると、自動リカバリがアクティブ化されます。 この場合、サーバーが MyISAM
テーブルを開いたときに、テーブルにクラッシュのマークが付いているかどうかや、テーブルのオープンカウント変数が 0 でないかどうか、そして外部ロックが使用不可能な状態でサーバーを作動させているかどうかを確認します。 これらの条件のいずれかが true である場合、次のことが起こります。
サーバーは、テーブルにエラーがあるかどうかを確認します。
サーバーがエラーを検出した場合、迅速なテーブル修復を行います (データファイルのソートは行いますが、再作成は行いません)。
データファイルの中にエラーがあるために (たとえば、重複キーエラーなど) 修復が失敗した場合、サーバーは再試行して、今度はデータファイルを再作成します。
それでも修復が失敗した場合、サーバーはもう一度古い修復オプション方式で試行します (ソートをせずに行ごとに書き込みます)。 この方法は、どのタイプのエラーも修復できるはずであり、ディスク容量の要件は低くなっています。
リカバリで以前に完了したステートメントのすべての行をリカバリできず、myisam_recover_options
システム変数の値に FORCE
を指定しなかった場合、自動修復はエラーログにエラーメッセージとともに中断されます:
Error: Couldn't repair table: test.g00pages
FORCE
を指定すると、代わりにこのような警告が書かれます。
Warning: Found 344 of 354 rows when repairing ./test/g00pages
自動リカバリ値に BACKUP
が含まれている場合、リカバリプロセスでは、
という形式の名前のファイルが作成されます。 これらのファイルを自動的にデータベースディレクトリからバックアップメディアに移動する cron スクリプトを持つことをお勧めします。
tbl_name-datetime
.BAK