ホームページ  >  記事  >  データベース  >  MySQL イベントは古い行を削除する効率とスケーラビリティをどのように向上させることができますか?

MySQL イベントは古い行を削除する効率とスケーラビリティをどのように向上させることができますか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-08 21:50:02207ブラウズ

How Can MySQL Events Improve Efficiency and Scalability for Deleting Old Rows?

ローリングトランケーションによる古い MySQL 行の効率的な削除

多くのアプリケーションでは、指定された期間より古い行を定期的に削除する必要があります。トラフィックの多いテーブルを処理する場合、効率的な方法を見つけることが重要です。

現在のアプローチ

以前は、cron ジョブを実行することにより、テーブルが 1 つの大きなバッチで切り詰められていました。毎時。これにより、アプリケーションのハングは防止されましたが、書き込みトラフィックが多いときのスケーラビリティの制限が生じました。

代替: スケジュールされたイベント

現在の方法の代替方法は、MySQL のイベントを利用することです。特徴。イベントを使用すると、スケジュールに基づいてデータベース タスクを自動実行できます。

ローリング トランケーションのイベントの例

次に、「 tableName 」テーブル内の行を削除するサンプル イベントを示します。 30 日より古いもの:

SET @@GLOBAL.event_scheduler = ON;

CREATE EVENT AutoDeleteOldNotifications
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
ON COMPLETION PRESERVE
DO
DELETE LOW_PRIORITY FROM databaseName.tableName
WHERE datetime < DATE_SUB(NOW(), INTERVAL 30 DAY);

イベントを使用する利点

イベントにはいくつかの利点があります:

  • 自動実行: タスクはスケジュールに基づいて自動的に実行され、手動介入の必要がなくなります。
  • 効率的かつスケーラブル: イベントはデータベース バックグラウンドで実行され、アプリケーションのパフォーマンスとトラフィックへの影響を軽減します。
  • 低優先度: LOW_PRIORITY フラグにより​​、高負荷時の削除操作が読み取り操作に干渉しないことが保証されます。
  • 永続性: ON COMPLETION PRESERVE は、イベントが実行後に削除されないことを保証し、その再現性を保証します。

以上がMySQL イベントは古い行を削除する効率とスケーラビリティをどのように向上させることができますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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