1️⃣ 부분범위 처리란?
인덱스 손익분기점의 히든카드🃏
전체 쿼리 집합을 연속적으로 전송하지 않고
사용자로부터 Fetch Call이 있을 때마다 일정량씩 나누어 전송하는 것❗
2️⃣ 쿼리툴에서의 부분범위 처리
화면에 100개의 레코드가 출력된 상태에서 101번째 레코드를 읽으렷고 스크롤하는 순간
추가 레코드가 툴에 조회된 적이 있지 않은가?
- 바로 이것이 쿼리툴에서의 부분범위처리
- 101번째 레코드를 읽으려고 스크롤하는 순간 Fetch Call이 발생하는 것
🤨 모든 쿼리 툴이 이러할까?
- NO❗
- 클라이언트 프로그램을 개발하는 개발자의 몫
- 즉, 부분범위 처리 방식으로 결과집합을 전송할 수도 있고 안 할 수도 있다
3️⃣ 의미있는 부분범위 처리
- Fetch Call이 있을 때마다 조금씩 가져오는 것이 부분범위 처리라면?
- 부분적으로 가져올 때 비로소 의미 있는 것이 아닐까?
즉, 부분을 가져오고 난 후 멈출 수 있어야 의미가 있다는 것❗
4️⃣ N-Tier 환경에서의 부분범위 처리
💡 2-Tier와 N-Tier에 대해 살짝 알아보자
- 2-Tier
- client <-> DB
- client가 DB에 직접 접속해서 쿼리를 날림
- N-Tier
- client <-> WAS <-> DB
- client와 DB 사이에 WAS나 Web Server 등이 사이에 낀 구조
- 클라이언트가 특정 DB 커넥션을 독점할 수 없음
- 작업을 마치면 DB 커넥션을 곧바로 커넥션 풀에 반환해야함
그렇다면 N-Tier 환경에서는 부분범위처리가 의미 없는 개념일까?
- 의미 없다면 물어보지도 않았을 것 ㅎㅎ
- Top N 쿼리나 페이징 처리를 통해 N-Tier 환경에서도 부분범위 처리 구현이 가능함
(* 자세한 내용은 추후에 더 공부해서 하이퍼링크를 연결해보도록 하겠습니다)