Open skarltjr opened 2 years ago
더 고민해보기
- 게시글 리스트 조회 시 한 번에 40개씩가져온다
- 현재 검색 조건에 맞는 게시글을 40개씩 가져오고 각 게시글당 1번씩 추가쿼리를 통해 미리보기 정보를 불러온다
- ★즉. 아직 40*1 방의 쿼리가 발생한다는것이고 분명히 더 줄여볼 수 있다고 생각.
물론 여기서 무조건 쿼리를 줄이는게 맞을까?라는 고민도 해봤다.
그런데 내가 지금 만드는 "커뮤니티 서비스"며 가장 빈번하게 사용될 기능은 "검색(게시글 리스트 조회)"이라고 생각하기에
만약 매 번 검색 or 아래로 스크롤하여 게시글 더 보기를 할 때마다 40방의 쿼리가 발생하는건 막아야한다고 생각했다.
또한 이 경우는 단순히 조회(select)라서 적절한 방식이라고 생각.
---
만약 조회가 아닌 update등의 문제라면 대량의 데이터를 처리하는 "그 시간동안" 트랜잭션이 유지되어야하기에 문제가 발생할 수 있다는
말을 본 적이 있다.
해결
1. 검색 매서드를 통해 검색 조건에 해당하는 게시글 List를 가져온다
2. join fetch를 통한 게시글 미리보기 load 쿼리 최적화
3. 1번에서 가져온 게시글의 아이디와 in절을 활용하여 한 번에 40개에 대한 게시글 미리보기 40개를 가져온다.
추가적인 고민상황
정말 열심히 고민해서 쿼리 횟수를 줄이고 줄였지만 이 방법 자체는 한 방의 쿼리가 너무 클 수 있다는 생각이 들었다.
지금 상황에선 적절한 방법일 수 있지만 비슷하게 다른 상황( 여러번의 쿼리 & 각 쿼리가 매우 큰 상황 )에서는 올바르지 못한 것 같다.
왜냐하면 한 방 한 방이 거대한 쿼리를 한 번에 가져오겠다고 하는것은
- 결국 방대한 한 방 쿼리를 수행할 수 있는 성능이 뒷받침돼야하기 때문이라고 생각.
- 또한 그 방대한 양의 데이터를 갖고오기위한 쿼리가 과연 남이 이해할 수 있는 쿼리일까?라는 생각
그럼 그 땐 어떻게해야할까? 적절하게 쪼개며 나와 모두가 이해할 수 있는 과정의 쿼리도 하나의 방법일 수 있다고 생각.
상황:
방법:
비정규화 사용 이유:
주의: 비정규화를 통해 발생할 수 있는 문제점. 비정규화의 장-단점은 알고 사용하고자 한다.