トラフィックの多いテーブルで期限切れの MySQL 行を効率的に削除する
MySQL で時間に敏感なデータを処理する場合、古い行の削除が必要になります。一般的なアプローチの 1 つは、cron ジョブを使用して DELETE クエリを定期的に実行することです。ただし、トラフィックの多いテーブルの場合、そのようなジョブはパフォーマンスのボトルネックやデータの不整合を引き起こす可能性があります。
より良い解決策は、MySQL のイベント スケジューラを利用することです。この機能を使用すると、特定のタスクを自動的に実行するスケジュールされたイベントを確立できます。定期的にトリガーするイベントを作成すると、進行中のテーブル操作に影響を与えることなく、古い行の削除を自動化できます。
たとえば、望ましい存続期間が 7 日間の通知を保存するテーブルについて考えてみましょう。毎日実行し、1 週間以上古い通知をすべて削除するイベントを作成できます。
CREATE EVENT AutoDeleteOldNotifications ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY ON COMPLETION PRESERVE DO DELETE LOW_PRIORITY FROM notifications WHERE time_added < DATE_SUB(NOW(), INTERVAL 7 DAY);
ON COMPLETION PRESERVE 句を使用すると、各実行後にイベントがアクティブなままになります。 LOW_PRIORITY キーワードは、クエリがアクティブなトランザクションを中断してはならないことを示し、パフォーマンスへの影響をさらに最小限に抑えます。
イベントを利用することで、トラフィックの多い MySQL テーブル内の古い行を効率的かつ自動で削除し、データの整合性を維持しながら、パフォーマンスへの影響を最小限に抑えることができます。オーバーヘッド。
以上がトラフィックの多い MySQL テーブルで期限切れの行を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。