메뉴 건너뛰기

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 / 웹 서버 리소스 사용량 최소화


번호 제목 글쓴이 날짜 조회 수
27 5. Direct Path I/O file balto 2010.07.10 12191
26 8. 블록 클린아웃 휘휘 2010.05.31 12287
25 7. PL/SQL 함수의 특징과 성능 부하 실천하자 2010.07.12 12606
24 6. RAC 캐시 퓨전 file 토시리 2010.07.19 12631
23 10. V$SQL 실천하자 2010.06.14 12680
22 8. Statspack / AWR balto 2010.06.13 12768
21 1. Library Cache Lock file balto 2010.07.17 12803
20 7. Result 캐시 휘휘 2010.07.19 12969
19 8. PL/SQL 함수 호출 부하 해소 방안 토시리 2010.07.11 14030
18 1. Explain Plan 실천하자 2010.06.06 14666
17 6. 바인드 변수의 부작용과 해법 file 실천하자 2010.06.28 14674
16 3. 버퍼 Lock [1] 휘휘 2010.05.24 15232
15 9. ASH(Active Session History) 실천하자 2010.06.14 15608
14 2. SQL 처리과정 file 휘휘 2010.06.28 15676
13 5. Fetch Call 최소화 file 휘휘 2010.07.05 16851
12 1 장. 오라클 아키텍처 운영자 2010.05.20 17850
11 4. Array Processing 활용 file 휘휘 2010.07.05 18250
10 9. Static vs. Dynamic SQL [1] balto 2010.07.04 18347
9 11. Shared Pool file 실천하자 2010.05.31 18512
8 5. Undo file 토시리 2010.05.31 18661