> 데이터 베이스 > MySQL 튜토리얼 > 트래픽이 많은 MySQL 테이블에서 만료된 행을 효율적으로 삭제하려면 어떻게 해야 합니까?

트래픽이 많은 MySQL 테이블에서 만료된 행을 효율적으로 삭제하려면 어떻게 해야 합니까?

Susan Sarandon
풀어 주다: 2024-11-13 10:02:02
원래의
780명이 탐색했습니다.

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

트래픽이 많은 테이블에서 만료된 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿