2016-07-18 2 views
4

많은 수의 테이블이 있는데 그 중 일부는 백만에 가깝습니다. 이 테이블의 최근 레코드를 계속 액세스하는 백그라운드 작업이 있습니다. 점점 커지는 크기 때문에 작업은 완료하는 데 더 오랜 시간이 걸립니다. 게다가 프런트 엔드에 데이터를 표시 할 때 서버에 대한 호출도 매우 오랜 시간이 걸립니다.개체를 복제하고 다른 테이블에 저장하십시오.

따라서 이러한 테이블의 복제본을 아카이브로 작성하고이 '아카이브'테이블에 데이터를 저장하는 것이 좋습니다 (나중에 사용할 수 있도록). 아이디어는 레코드가 완전히 처리 될 때마다 '라이브'테이블에서 삭제되고 '아카이브'테이블에 저장된다는 것입니다.

PHP 클론은 원본과 완전히 동일한 엔티티를 생성하므로 작동하지 않습니다. 한 가지 확실한 방법은 동일한 단계를 수행하여 엔티티를 만들고 항상 동시에 수정하는 것입니다.

더 좋은 방법이 있나요?

+1

인덱스를 올바르게 사용하고 있는지 확인하려면 데이터베이스 쿼리 (mysql을 사용하는 경우 EXPLAIN)를 분석해야합니다. 레코드 수는 그다지 예외는 아닙니다. – jeroen

답변

0

당신이 찾고있는 것은 "파티션"입니다. MySQL과 Postgres 모두 약간의 매뉴얼을 가지고있다.

아마도 이것을 구현하는 가장 좋은 방법은 X 시간마다 분할 쿼리를 실행하는 데몬 스크립트를 사용하는 것입니다.

관련 문제