Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
HTML Download (Zip) - 7.2Mb


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
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.