MySQL 5.1 リファレンスマニュアル :: 13 ストレージエンジンとテーブルタイプ :: 13.4 MyISAM ストレージエンジン :: 13.4.1 MyISAM スタートアップオプション
« 13.4 MyISAM ストレージエンジン

13.4.2 キーに必要な領域 »
Section Navigation      [Toggle]
  • 13.4 MyISAM ストレージエンジン
  • 13.4.1 MyISAM スタートアップオプション
  • 13.4.2 キーに必要な領域
  • 13.4.3 MyISAM テーブルストレージフォーマット
  • 13.4.4 MyISAM テーブルの問題点

13.4.1. MyISAM スタートアップオプション

MyISAM テーブルの性能を変える為に次の mysqld オプションを使う事ができます。追加情報については 項4.2.2. 「コマンド オプション」を参照してください。

  • --myisam-recover=モード

    クラッシュした MyISAM テーブルの自動修復モードをセットします。

  • --delay-key-write=ALL

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

    注:もしこれをするのであれば、テーブルの使用中に、他のプログラムからMyISAM テーブルにアクセスしてはいけません。(他のMySQL サーバーからのアクセスや、 myisamchkを利用してのアクセスなど。) もししてしまうと、インデックスが破損します。--external-locking を利用してもこのリスクを排除する事はできません。

次のシステム変数はMyISAM テーブルの性能に影響を与えます。追加情報については 項4.2.3. 「システム変数」を参照してください。

  • bulk_insert_buffer_size

    大量挿入最適化で使用されるツリーキャッシュのサイズ。注:これはそれぞれのスレッドのリミットです!

  • myisam_max_sort_file_size

    MyISAM インデックスを再作成している最中にMySQLが使用を許されているテンポラリファイルの最大サイズ (REPAIR TABLE、ALTER TABLE、 または LOAD DATA INFILEの最中)。もしファイルサイズがこの値よりも大きければ、代わりにキーキャッシュを使用してインデックスが作成されますが、この方法のほうが遅くなります。値はバイトで表示されます。

  • myisam_sort_buffer_size

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

もし --myisam-recover オプションを利用してmysqldをスタートさせれば、自動修復が作動します。この場合、サーバーが MyISAM テーブルを開いた時に、テーブルにクラッシュのマークが付いているかどうかや、テーブルのオープンカウント変数が0でないかどうか、そして外部ロックが使用不可能な状態でサーバーを作動させているかどうかを確認します。もしこのような条件が整っていると、次のような事が起こります。

  • サーバーがテーブルのエラーをチェックします。

  • もしサーバーがエラーを発見すると、高速テーブル修復を試みます。(データファイルの保存はしますが、再作成はしません。)

  • データファイル中のエラーのせいで修復が失敗したら、(例えば重複キーエラー)、サーバーは今度はデータファイルを再作成してもう一度修復を行います。

  • もし修復がまた失敗したら、サーバーは古い修復オプションの方法でもう一度修復を試みます (ソートせず一行ずつ書く)。この方法であればどんなタイプのエラーも修復し、ディスクのスペースも少しで済みます。

MySQL Enterprise.  もし --myisam-recover オプションがセットされていなければ、MySQL Network Monitoring and Advisory Serviceの加入者は通知を受け取ります。追加情報については http://www-jp.mysql.com/products/enterprise/advisors.htmlを参照してください。

もし以前に完成されたステートメントから全ての行を回復できず、--myisam-recover オプション値の中の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 スクリプトが必要です。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates