메뉴 건너뛰기

bysql.net

6. 페이지 처리의 중요성

2010.07.11 22:14

실천하자 조회 수:6820

  • 대용량 데이터 조회시

- 클라이언트/서버 환경 : 커서를 닫지 않은 채 사용자 이벤트 발생 시 결과 집합을 Fetch하도록 구현

- 웹 애플리케이션 환경 : 데이터베이스와의 연결을 지속하지 않는 웹환경으로 다음 페이지 요청 or

                                  스크롤 바 변경때마다 개별적은 SQL 문 수행 방식으로 페이지 처리 구현


  • Bad Example

- 데이터를 계속 Fetch 하다 출력 페이지에 도달 시 그때부터 PrintRow 호출로 pagesize 개수만큼 로우 출력 후 Fetch를 멈춤

  → 뒤 페이지로 이동할수록 불필요하게 많은 Fetch Call 유발

  → FetchSize를 늘려도 불필요한 Fetch Count 는 줄일 수 있지만 Array 버퍼에 쌓인 많은 로우를 읽으면서 발생하는

      CPU 리소스 낭비와 메모리 사용량이 증가,

      앞페이지 출력시 불필요한 뒷 부분의 로우를 가져오게되어 서버 및 네트워크 부하 가중

  ☞ 페이지 처리를 서버 단에서 완료하고 최종적으로 출력할 레코드만 Fetch


  • 페이지 처리를 하지 않을 시 발생하는 부하요인

1. 다량의 Fetch Call 발생

2. 대량의 결과 집합을 클라이언트로 전송하면서 발생하는 네트워크 부하

3. 대량의 데이터 블록을 읽으면서 발생하는 I/O 부하

4. AP 서버 및 웹 서버 리소스 사용량 증가


  • 페이지 처리

1. 페이지 단위로, 화면에서 필요한 만큼씩 Fetch Call

2. 페이지 단위로, 화면에서 필요한 만큼씩 네트워크를 통해 전송

3. 인덱스와 부분범위처리 원리를 이용해 각 페이지에 필요한 최소량만 I/O

4. 데이터를 소량씩 나누어 전송하므로 AP / 웹 서버 리소스 사용량 최소화


번호 제목 글쓴이 날짜 조회 수
67 Front Page file 운영자 2010.05.17 154865
66 4. Prefetch file balto 2010.07.10 28434
65 5. 오라클 Lock file 휘휘 2010.06.07 26365
64 2. DB 버퍼 캐시 file 휘휘 2010.05.24 21916
63 3. SQL 트레이스 file balto 2010.06.06 21175
62 1. 기본 아키텍처 [1] file 휘휘 2010.05.23 19899
61 2. 트랜잭션 수준 읽기 일관성 file 휘휘 2010.06.07 19568
60 5. Undo file 토시리 2010.05.31 18650
59 11. Shared Pool file 실천하자 2010.05.31 18511
58 9. Static vs. Dynamic SQL [1] balto 2010.07.04 18343
57 4. Array Processing 활용 file 휘휘 2010.07.05 18239
56 1 장. 오라클 아키텍처 운영자 2010.05.20 17842
55 5. Fetch Call 최소화 file 휘휘 2010.07.05 16839
54 9. ASH(Active Session History) 실천하자 2010.06.14 15607
53 2. SQL 처리과정 file 휘휘 2010.06.28 15340
52 3. 버퍼 Lock [1] 휘휘 2010.05.24 15225
51 6. 바인드 변수의 부작용과 해법 file 실천하자 2010.06.28 14665
50 1. Explain Plan 실천하자 2010.06.06 14663
49 8. PL/SQL 함수 호출 부하 해소 방안 토시리 2010.07.11 14023
48 7. Result 캐시 휘휘 2010.07.19 12969