ホームページ  >  記事  >  データベース  >  トラフィックの多い MySQL テーブルで期限切れの行を効率的に削除するにはどうすればよいですか?

トラフィックの多い MySQL テーブルで期限切れの行を効率的に削除するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-13 10:02:02710ブラウズ

How Can I Efficiently Delete Expired Rows in High-Traffic MySQL Tables?

トラフィックの多いテーブルで期限切れの 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。