15.2.1 MyISAM 起動オプション

MyISAM テーブルの振る舞いを変えるために、次の mysqld オプションを使用できます。追加情報については セクション5.1.3「サーバーコマンドオプション」を参照してください。

表 15.3 MyISAM オプション/変数リファレンス

名前 コマンド行 オプションファイル システム変数 ステータス変数 変数スコープ 動的
bulk_insert_buffer_size はい はい はい 両方 はい
concurrent_insert はい はい はい グローバル はい
delay-key-write はい はい グローバル はい
- 変数: 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_recover_options
myisam_recover_options はい グローバル いいえ
myisam_repair_threads はい はい はい 両方 はい
myisam_sort_buffer_size はい はい はい 両方 はい
myisam_stats_method はい はい はい 両方 はい
myisam_use_mmap はい はい はい グローバル はい
skip-concurrent-insert はい はい
- 変数: concurrent_insert
tmp_table_size はい はい はい 両方 はい

  • --myisam-recover-options=モード

    クラッシュした MyISAM テーブルの自動リカバリにモードを設定します。

  • --delay-key-write=ALL

    MyISAM テーブルへの書き込みの間にキーバッファーをフラッシュしないでください。

    注記

    これを行う場合、MyISAM テーブルの使用中に別のプログラムから (別の MySQL サーバーから、myisamchk を使用して、など)、このテーブルにアクセスしないでください。そのようにすると、インデックスが破損するおそれがあります。--external-locking を利用しても、このリスクは回避されません。

次のシステム変数は MyISAM テーブルの振る舞いに影響を与えます。追加情報については セクション5.1.4「サーバーシステム変数」を参照してください。

  • bulk_insert_buffer_size

    大量挿入の最適化に使用されるツリーキャッシュのサイズです。

    注記

    これは、スレッド当たりの制限値です。

  • myisam_max_sort_file_size

    MyISAM インデックスを再作成するとき (REPAIR TABLEALTER TABLE、または LOAD DATA INFILE 中に)、MySQL が使用を許可されている一時ファイルの最大サイズ。ファイルサイズがこの値より大きい場合、さらに低速なキーキャッシュを代わりに使用してインデックスが作成されます。値はバイト単位で指定されます。

  • myisam_sort_buffer_size

    テーブルのリカバリ時に使用されるバッファーのサイズを設定します。

自動リカバリが有効になるのは、mysqld--myisam-recover-options オプションで起動した場合です。この場合、サーバーが MyISAM テーブルを開いたときに、テーブルにクラッシュのマークが付いているかどうかや、テーブルのオープンカウント変数が 0 でないかどうか、そして外部ロックが使用不可能な状態でサーバーを作動させているかどうかを確認します。これらの条件のいずれかが true である場合、次のことが起こります。

  • サーバーは、テーブルにエラーがあるかどうかを確認します。

  • サーバーがエラーを検出した場合、迅速なテーブル修復を行います (データファイルのソートは行いますが、再作成は行いません)。

  • データファイルの中にエラーがあるために (たとえば、重複キーエラーなど) 修復が失敗した場合、サーバーは再試行して、今度はデータファイルを再作成します。

  • それでも修復が失敗した場合、サーバーはもう一度古い修復オプション方式で試行します (ソートをせずに行ごとに書き込みます)。この方法は、どのタイプのエラーも修復できるはずであり、ディスク容量の要件は低くなっています。

このリカバリで、前に実行したステートメントからすべての行をリカバリできず、FORCE--myisam-recover-options オプションの値に指定しなかった場合、自動修復はエラーメッセージをエラーログに書いて中止します。

Error: Couldn't repair table: test.g00pages

FORCE を指定すると、代わりにこのような警告が書かれます。

Warning: Found 344 of 354 rows when repairing ./test/g00pages

自動リカバリの値に BACKUP が含まれていると、リカバリプロセスはフォーム tbl_name-datetime.BAK の名前を持つファイルを作成します。これらのファイルを自動的にデータベースディレクトリからバックアップメディアに移動する cron スクリプトを持つことをお勧めします。


User Comments
Sign Up Login You must be logged in to post a comment.