約65のテーブルを持つデータベースがあります。テーブルの 1 つは、order_line と呼ばれる大きな MyISAM テーブルです。ときどきこのテーブルが壊れます。CHECK TABLE コマンドを使用すると、次のメッセージが表示されます。
オペレーション | メッセージの種類 | メッセージ_テキスト チェック | 警告 | 「テーブルはクラッシュとしてマークされています」 チェック | 警告 | 「3人のクライアントがテーブルを使用しているか、テーブルを適切に閉じていません」 チェック | エラー | 「114948 の 1149921 個のキーが見つかりました」 チェック | エラー | 「腐敗」
私はインターネットでこれをたくさん読みましたが、最も一般的な答えは「テーブルを修理する必要があります」です。それは私にとってはうまくいきますが、これが起こる理由と、これをどのように再現できるかを知りたいです。
Web アプリケーションがあり、顧客ごとに 1 つのデータベース (300 以上) があります。スクリプトを実行して、これらすべてのデータベースを更新します。これを行うと、これらのテーブルの多くが破損するのではないかと心配しています。
また、これらすべてのデータベースを更新する最善の方法を知りたいです。テーブル/データベースを使用しているユーザーがいないことを確認するために、MySQL をシャットダウンして再起動する必要がありますか?