在高流量表上有效刪除過期的 MySQL 行
在 MySQL 中處理時間敏感資料時,刪除舊行成為必要。常見的方法是使用 cron 作業定期執行 DELETE 查詢。然而,對於高流量的表,此類作業可能會導致效能瓶頸和資料不一致。
更好的解決方案在於利用 MySQL 的事件調度程式。此功能可讓您建立自動執行特定任務的計劃事件。透過建立定期觸發的事件,您可以自動刪除舊行,而不會影響正在進行的表格操作。
例如,考慮一個儲存通知的表,其預期壽命為 7 天。您可以建立每天執行的事件並刪除一週之前的所有通知:
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中文網其他相關文章!