数百万の MySQL 行を効率的に削除する
MySQL テーブルから大量のデータを削除すると、潜在的なテーブル ロックの問題により問題が発生する可能性があります。この記事では、サイトの運用を中断することなく、多数の重複データ行を削除する必要がある一般的なシナリオを検討します。
課題
この状況における主な障害は、時間がかかることです。単一のクエリを実行して数百万行を削除するときに課されるテーブル ロック。これにより、テーブルに関連する他のすべての操作が停止し、サイトが不安定になる可能性があります。
考えられる解決策
ロックの問題を軽減するには、次の 2 つの主なアプローチが利用可能です。
最適化されたソリューション
最適なパフォーマンスを得るには、より効率的な解決策は、ループと制限句を使用した増分削除アプローチを利用することです。これには次の手順が含まれます。
DELETE FROM `table` WHERE (whatever criteria) ORDER BY `id` LIMIT 1000
クエリは、影響を受ける行がなくなるまで繰り返しられます。データベースの過負荷を防ぐために、繰り返しの間に短い一時停止が含まれます。このアプローチでは、管理可能なバッチでデータを効果的に削除しながら、他のクエリを同時に実行できるため、テーブルのロック時間と全体的な実行時間の両方が削減されます。
以上がサイトの運用を中断せずに数百万の MySQL 行を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。