踏んだ穴——MySQL索引を削除するには慎重に

879 ワード

経過:元のテーブルには2つのフィールドの連合一意インデックスunique keyがあり、ビジネス変更のため、この2つのフィールドが一意ではなく、一意インデックスを削除する必要があります.フィールドの1つが一意のインデックスだけでなく、クエリー・インデックスとしても使用されることを考慮して、この一意のインデックスを削除し、このフィールドの通常のインデックスを追加します.そこでddlデータベースの変更を提案し、一意のインデックスを削除し、通常のインデックスを追加します.このため、一意のインデックスを削除した後、新しい通常のインデックスを実行する時間がなく、データベース接続プールがいっぱいになり、ページのすべての要求に異常が発生しました.テーブルには500 Wのデータがあり,理論的削除と新規インデックスはいずれも10 s以内に完了する.問題は、一意のインデックスを削除した後、システムのMQ処理タスクには、あるフィールドに基づいて更新されたタスクが大量に実行され、インデックスがないとタスクがかなり遅くなり、大量のタスクがデータベース接続プールを埋め尽くし、システムがクラッシュします.インデックスがない場合、500 Wのデータ量であるフィールドに基づいてクエリを行うのはかなり遅いことを知っておく必要があります.の新規通常インデックスシステムlの実行に間に合わないうちにクラッシュした.一時的な解決方法は、システムを停止し、データベースのクエリーと更新のトランザクションを殺し、通常のインデックスddlを追加して実行した後、システムアプリケーションを再起動することで、システムは正常に戻ります.紛失したデータについては何とかして補うようにしましょう.結論:この件は、データベースインデックスを削除するには慎重にしなければならないことを示しています.必ずしなければならないとしても、インデックスを削除した後の影響性を明確にし、インデックスを交換するには、類似の事故を避けるために、追加した後に削除する原則に従わなければならない.