06. 페이지 처리의 중요성

  • 클라이언트/서버 환경에서 대용량 데이터를 조회할 때는 커서를 닫지 않은 채 사용자 이벤트가 발생할 때마다 결과 집합을 Fetch 하도록 구현할 수 있다.
  • 웹 애플리케이션 환경에서는 커서를 계속 오픈한 채로 결과집합을 핸들링 할 수 없다.
  • 데이터베이스와의 연결을 지속하지 않는 웹 환경이기 때문에 사용자가 다음 페이지를 요청하거나 스크롤 바를 내릴 때마다 개별적인 SQL문을 수행하는 방식으로 페이지 처리를 구현해야 한다.
  • 페이지 처리를 서버 단에서 완료하고 최종적으로 출력할 레코드만 Fetch 하도록 해야 한다.

  • 페이지 처리를 하지 않았을 때 발생하는 부하요인
    1. 다량의 Fetch Call 발생 (SQL*Net roundtrips to/from client)
    2. 대량의 결과 집합을 클라이언트로 전송하면서 발생하는 네트워크 부하
    (byte sent via SQL*Net to client)
    3. 대량의 데이터 블록을 읽으면서 발생하는 I/O 부하
    4. AP서버 및 웹 서버 리소스 사용량 증가.

  • 해결방법
    1. 페이지 단위로, 화면에서 필요한 만큼씩 Fetch Call
    2. 페이지 단위로, 화면에서 필요한 만큼씩 네트워크를 통해 전송.
    3. 인덱스와 부분범위처리 원리를 이용해 각 페이지에 필요한 최소량만 I/O
    4. 데이터를 소량씩 나누어 전송하므로 AP, 웹 서버 리소스 사용량 최소화

  • 조회할 데이터가 일정량 이상이고 수행빈도가 높다면 필수적으로 페이지 처리를 구현해야 한다.
  • 일반 조회 시에는 페이지 처리를 하고, 사용자가 필요할 때만 '전체 조회' 또는 '다운로드 받기' 버튼을 클릭할 수 있도록 기능을 제공.

  • 페이지 처리를 하는 목적은, 1차적으로 데이터베이스 Call 횟수를 줄이고 네트워크를 통한 데이터 전송량을 최소화하고, 서버 내에서의 처리 일량을 줄이는 데에도 있다.

문서에 대하여