데이터 양이 상대적으로 많은 경우 총 개수는 어떻게 계산하나요?
예를 들어 테이블에 500만 개의 데이터가 있는 경우 전통적인 방법은 count()로 매우 비효율적입니다.
인터넷에서 어떤 사람들은 mysql 트리거를 사용하여 결과 테이블에 통계 결과를 삽입한다고 합니다.
다른 방법은 없나요? 예를 들어, MySQL 결과 테이블에 비동기 실행을 삽입하는 것이 가능합니까?
아니면 통계 결과를 redis에 넣을 수 있나요?
예약 실행을 사용한다는 이야기도 있지만 우리의 사용 시나리오에서는 합계를 실시간으로 계산해야 합니다.
데이터 양이 상대적으로 많은 경우 총 개수는 어떻게 계산하나요?
예를 들어 테이블에 5백만 개의 데이터가 있는 경우 전통적인 방법은 count()이므로 매우 비효율적입니다.
1. 인터넷의 누군가가 mysql 트리거를 사용하여 결과 테이블에 통계 결과를 삽입한다고 말했습니다.
다른 방법은 없나요? 예를 들어, MySQL 결과 테이블에 비동기 실행을 삽입하는 것이 가능합니까?
2. 아니면 통계 결과를 redis에 넣을 수 있나요?
예약 실행을 사용한다는 이야기도 있지만 우리의 사용 시나리오에서는 합계를 실시간으로 계산해야 합니다.
3. 행 번호 정보를 저장하기 위해 새 테이블을 생성할 수 있습니다.
테이블 이름(기본 키) | 데이터 볼륨
트리거 시 데이터가 삽입되면 해당 테이블 + 1, 데이터가 삭제되면 1씩 감소합니다.
4. 또 다른 옵션은 비즈니스의 실시간 요구 사항에 따라 매번 1분의 증분만 계산하는 것입니다. 마지막 통계 값에 1분의 증분을 더한 값이 현재 합계입니다. 물론 이는 오래된 데이터가 삭제되었는지 여부에 따라 다릅니다. 이 방법은 통계 결과를 테이블에 삽입하는 것과 결합될 것이라고 생각합니다.
저는 redis를 사용하여 저장, 삽입+1, 삭제-1을 주로 사용하는 편입니다. DB에 대한 부담이 없고 동시에 커플링도 줄어듭니다
그냥 Memcache나 Redis를 사용하여 계산하세요.
갯수를 확인해야 할 때는 먼저 Memcache를 확인하세요. 발견되지 않으면 데이터베이스 개수로 가서 Memcache를 설정하세요. 다음에 Memcache를 확인하면 거기에 있을 테니 그만 두세요. 셀 필요는 없습니다.
위의 내용은 상대적으로 많은 양의 데이터입니다. 어떻게 하면 통계 기능을 더 잘 구현할 수 있을까요? 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 주목해주세요!