MyISAMテーブルは非常に簡単にクラッシュします。各テーブルには、MyISAMテーブルが処理する開いているファイルの数を追跡するヘッダー情報があります。
mysqldがクラッシュした場合、ファイルハンドルを開いているMyISAMテーブルには、ファイルハンドルを閉じるたびにファイルハンドル数をデクリメントする機会がありませんでした。したがって、新しいファイルハンドルがMyISAMテーブル(.MYDファイル)を開き、mysqldがMyISAMテーブルが開いていると信じるファイルハンドルの数とMyISAMテーブルが実際に開いているファイルハンドルの数の不一致を検出した場合、テーブルは次のようになります。クラッシュしたと宣言されました。
これを処理するには、次の4つの方法があります。
方法#1:MyISAMの自動修復をセットアップする
私の投稿を参照してください
方法#2:MyISAMの代わりにInnoDBを使用する
InnoDBには、ストレージエンジンの初期化に組み込まれたクラッシュリカバリがあります。 MyISAMはしません
方法#3:MyISAMの代わりにAriaを使用する
Ariaは、MariaDBのMyISAMのドロップイン代替品です。個々のテーブルのクラッシュリカバリメカニズムを備えています。
方法#4:mysqldで-9を殺さないでください
mysqldが故意または非自発的にクラッシュした場合、開いているすべてのMyISAMテーブルのヘッダー情報により、それらがクラッシュ状態になります。 mysqldを手動で強制終了する必要はありません。