부분범위 처리

BaeBae·2025년 7월 29일

친절한 SQL 튜닝

목록 보기
5/8
post-thumbnail

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 환경에서도 부분범위 처리 구현이 가능함
    (* 자세한 내용은 추후에 더 공부해서 하이퍼링크를 연결해보도록 하겠습니다)
profile
Data가 좋은 Web 개발자

0개의 댓글