쿼리 실행 시간 비교 (스프링 메서드 실행 시간)
- dooingle 테이블에서 where(오늘 00:00) group by(owner_id) order by(guest.count())


- dooingle_count 테이블에서 order by(count)


nGrinder 부하 테스트 결과



→ dooingle_count 조회 쿼리가 TPS, MTT 모두 2배 이상 성능이 좋다!!
- 하지만.. 뒹글이 등록될 때마다 DB에 update 쿼리를 날린다는 점이 고민됨..
- 그리고 뜨거운 뒹글러 목록은 로그인 후라면 모든 화면에서 필요로 하는데, 계~속 DB에 조회 쿼리를 날려도 괜찮을까?!
캐시를 활용한다면?
- redis sorted set 자료구조 이용
- 뒹글 등록 시마다 score 업데이트, 조회 시 캐시 데이터 조회
- cache miss 일 경우(캐시 서버 연결 실패, 캐시 데이터 유실 등) dooingle 테이블에서 조회하고 이를 캐시에 저장
- 장점 : 데이터 정합성 보장
- 단점 : 뒹글 등록 시마다 캐시 데이터 업데이트
- dooingle 테이블에서 조회한 결과를 캐시에 저장
- 조회 시 캐시 데이터를 조회, 10분마다 DB 조회 결과를 캐시에 저장
- 장점 : 10분에 한 번만 DB 조회, 캐시 데이터 업데이트
- 단점 : 데이터 정합성이 떨어짐
- dooingle_count 테이블에서 조회한 결과를 캐시에 저장
- 조회 시 캐시 데이터를 조회, 10분마다 DB 조회 결과를 캐시에 저장
- 단점 : 뒹글 등록 시마다 DB 데이터 업데이트, 데이터 정합성 떨어짐
- dooingle
https://jason-heo.github.io/mysql/2014/03/05/index-opt-for-groupby.html
인덱스 생성