MySQL 8.0 リファレンスマニュアル


16.2.1 MyISAM 起動オプション

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 TABLEALTER 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 が含まれている場合、リカバリプロセスでは、tbl_name-datetime.BAK という形式の名前のファイルが作成されます。 これらのファイルを自動的にデータベースディレクトリからバックアップメディアに移動する cron スクリプトを持つことをお勧めします。


関連キーワード:  テーブル, ストレージ, エンジン, size, サーバー, 変数, グローバル, リカバリ, 作成, 修復