2012-04-01 4 views
2

PHP/MySQL 통계 로깅 프로그램에서 최선의 MySQL DB 구조를 찾으려고합니다.오늘, 어제, 월간 로그에 대한 MySQL 테이블 설정

방문객이 최신 통계 (예 : 최신 20 개 항목)까지 볼 수있는 부분이 있지만 오늘의 전반적인, 전체적인 지난 7 일간 및 지난 30 일간의 전반적인 통계를 볼 수있는 부분이 있습니다. .

실시간 통계를 가져 오는 데이터에서 매 60 초마다 업데이트 당 최소 10 개의 새 항목이 업데이트됩니다.

은 ... 설정이 개 테이블에 "오늘의"통계와 다른 전체 아카이브 역할을 역할을 한 ... 같은 올바른 내 논리가 :

todays_stats
ID
from_url
ENTRY_DATE

overall_stats
ID
,from_url
ENTRY_DATE

두 번 각각의 새로운 항목 삽입하지만 cron 작업을 통해 매일 밤 자정에 todays_stats을 절단?

아니면 더 효율적인 방법이 있습니까?

+1

표가 더 나을 것이므로 원하는 데이터를 얻기 위해 쿼리를 사용하십시오. GROUP BY를 사용하여 매일 또는 매주 또는 다른 통계를 얻을 수 있습니다. –

답변

1

일일 통계 행 수, 기록 데이터 삭제 여부 및 색인 수에 따라 다릅니다. 이력 데이터를 삭제하고 대량의 통계 데이터가있는 7 ~ 8 개의 인덱스가 필요하므로 일별 테이블로 데이터를 분리하고 데이터를 가져 오는 저장 프로 시저 (마지막 날, 지난 7 일, 지난 30 일 등)를 작성합니다. 표를 떨어 뜨리는 것이 훨씬 더 빠릅니다. DELETE FROM table WHERE index=6-month-old-data

0

나는 가장 좋은 방법은 수, 당신은 당신이 전체 테이블에 대한 현재의 모든 데이터를 삽입합니다 전체 통계 및 자정에 별도의 테이블이됩니다 현재의 데이터 세트를 개최 한 테이블을 유지하는 것입니다 생각

INSERT INTO `overall` SELECT * FROM `current` 

쿼리. 그런 다음 데이터 복사가 성공적으로 완료되면 현재 테이블을 자릅니다.

+0

감사합니다! Alex! 샘플 데이터를 가지고 오늘 밤 시도해보고 그것이 어떻게 수행되는지보십시오. –

관련 문제