주어진 시간에 약 1,200 만 개의 행이있는 mysql 테이블이 있습니다. 테이블 크기를 어느 정도 관리 할 수있게하려면 오래된 데이터를 삭제해야합니다.
현재 cron 작업을 사용하여 매일 자정에이 쿼리를 실행하고 있습니다.
DELETE FROM table WHERE endTime < '1393632001'
쿼리를 마지막으로 실행했을 때 4,602,400을 검사하고 3 분 이상이 걸리고 CPU가 지붕을 통과했습니다.
오래된 데이터를 지우면서 CPU, 동기식 DB 연결, 디스크 큐 깊이 등이 부적절하게 급증하지 않도록하려면 어떻게해야합니까?
추신 : 사용주기에서 쿼리가 실제로 부적절한 시간에 진행되고 있음을 알 수 있습니다. 쿼리 타이밍이 매일 가장 낮은 사용 지점에서 발생하도록 이동했다고 가정합니다. 또한 "endTime"에 대한 색인이 없으며 가능한 한 많은 양의 데이터가 정기적으로 삽입되고 조회가 많지 않기 때문에 가능한 한 그렇게 유지하는 것이 좋습니다.
cron 작업을 사용하여 매 10 분마다 100k 또는 매 5 분마다 5k마다 삭제
"데이터베이스 관리자"에 대한보다 나은 답변을 얻을 수 있습니다
—
James Anderson