현재 나는 PHP/MySQL의 대시 보드에서 다음과 같은 몇 가지 통계/사실을 포함하고 있습니다. 판매 된 항목의 수, 매출, 성별 (남성/여성) 비율 사용자 등 (지난 주/월/년 모두 필터링 가능). 데이터의 양은 (현재) 그리 많지 않습니다 : 사용자 행 20.000 개, 하루 1.000 개, 500 개 품목이지만 향후 성장할 것으로 예상됩니다. 기하 급수적으로 증가 할 것으로 예상됩니다.통계 (그래프)에 대한 성능 데이터를 저장하는 최적의 방법
전략 변경이 사용자, 매출, 성별 비율 등에 영향을 미치는지 확인하기 위해 실적을 표시하는 그래프가 여러 개 있어야합니다.이를 위해 하루에 숫자가 필요합니다. 현재 대시 보드는 'NOW() - 1 주/1 개월/1 년'만 표시 할 수 있지만 성장을 요약하는 그래프를 표시 할 때이 수치는 매일 저장해야합니다.
내 질문은 :이 경우 어떤 옵션이 있습니까? 이 숫자를 저장하고 방문객, 판매, 성별 비율 등을 해당 날짜의 날짜와 연결된 행에 저장하는 별도의 '실적'또는 '기록'테이블에 cronjob을 설정할 수 있습니다. 이는 성능에는 좋지만 특정 데이터는 손실됩니다. 또 다른 옵션은 이러한 숫자를 복잡한 쿼리 (일별 그룹) 등으로 계산하는 것입니다.하지만 쿼리는 프로덕션 데이터베이스에서 수행되므로 집중적 인 것으로 보입니다. 특히 데이터베이스 구조가 조금 복잡하기 때문에 특히 그렇습니다. 프로덕션 데이터베이스에서이 작업을 수행하는 것을 피하면서 ETL로 데이터웨어 하우스를 설정하는 것이 프로덕션 데이터베이스에 과부하가 걸리는 것을 방지하는 더 좋은 옵션입니까? 이 경우 데이터가 실시간으로 표시되지 않습니다.
솔직히이 경우 가장 좋은 옵션이 무엇인지 모릅니다. 나는 그 대답에 대해 매우 궁금해! 많은 감사합니다.
계산이 너무 느리면 표준 쿼리를 사용하여 하루에 한 번 (예 : 자정) 복잡한 쿼리를 실행하여 기본 데이터에서 필요한 통계를 생성 할 수 있습니다. 이전 날짜의 데이터가 변경되지 않거나 모든 데이터를 다시 작성하는 경우 새로운 날의 데이터 추가). 현재 날짜는 통계에서 유효하지 않으므로 "라이브"일 필요는 없습니다.사전 계산은 나중에 표시/필터링 할 항목에 따라 다르지만 모든 필수 통계를 만족하는 구조를 찾을 수없는 경우 여러 테이블을 만드는 것이 전적으로 유효합니다. – Solarflare
테이블에 대한 더 많은 정보를 제공하면 도움이 될 것입니다. 각 테이블에는 무엇이 들어 있으며, 대략 지금은 지금부터 1 년 후의 많은 행이 예상됩니다. –
[_Summary Tables_] (http://mysql.rjweb.org/doc.php/summarytables)는 훌륭한 아이디어처럼 들립니다. –