毎週、InnoDB エンジンを使用する MySQL テーブルから約 500,000 レコードを削除する cron ジョブが起動されます。このテーブルには、毎週処理する Web ログ データが含まれており、その後、不要になったデータは削除されます。このテーブルには、UNIX タイムスタンプである時刻を含む 3 つのインデックス (外部キーなし) があります。
グローバルビューログから削除 WHERE 時間 <1354391592
問題は、先週実行したこのクエリの実行に 2 時間以上かかり、その間、サーバー全体が遅れていたことです。「iotop」は、MySQL によって書き込まれるハードディスクが大量に引用され、サーバーの負荷が異常なレベルまで劇的に増加したことを明らかにしました。
クリックするたびにテーブルが書き込まれます。私が見ていない部屋に象がいますか?つまり、この毎週のクエリを最適化するために盲目的に明らかなことはありますか?
ありがとう