ディスクフル状態が発生した場合、MySQL では以下のことを行います。
1 分ごとに 1 回、現在のレコードを書き込むために十分な空き領域があるかどうか確認する。十分な空き領域がある場合は、何も問題が発生しなかったように処理を続行する。
6 分ごとにログファイルにエントリを書き込み、ディスクフル状態を警告する。
問題を軽減するために、以下を行うことができます。
処理を続行するには、全レコードを挿入できるディスク領域を確保する必要がある。
スレッドを停止するには、mysqladmin
kill
をスレッドに送信する必要がある。
スレッドは、次にディスクがチェックされたとき(1分)に停止する。
他のスレッドが、ディスクフル状態の原因となったテーブルを待機している可能性がある。複数の ``ロック'' スレッドがある場合、ディスクフル状態で待機しているスレッドを 1 つ強制終了すると、他のスレッドの処理を続行できる。
上記の動作の例外は、REPAIR
または OPTIMIZE
を使用しているときか、インデックスが
LOAD DATA INFILE
または ALTER
TABLE
ステートメントの後にバッチで作成されるときです。
上記のコマンドはすべて、大きなテンポラリファイルを使用する場合があるので、資源が残り少なくなったシステムに問題を引き起こす可能性があります。上記の操作を実行中に
MySQL
がディスクフル状態になると、大きなテンポラリファイルが削除され、テーブルはクラッシュしたものとしてマークされます(旧テーブルが変更されずに残る
ALTER TABLE
は除きます)。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.