튜닝

 SQL튜닝

 근본적인 튜닝이라고 할 수 있다.

 H/W튜닝 (서버튜닝)

 

 

▶SQL튜닝을 위한 선결 과제

- 업무에 적당한 H/W(시스템 설계자) : 구현될 업무가 운영되기에 충분한 용량의 서버 용량 산정 및 환경 구축(CPU, Memory, Network등)

- 오라클 서버 튜닝(데이터베이스관리자) : 데이터베이스 메모리 및 I/O튜닝 / SQL특성에 맞도록 오라클 서버튜닝

- 운영체제튜닝(운영체제관리자) : 오라클서버가 운용되는데 필요한 기본적인 리소스 파라미터 튜닝

- 업무기능분석(업무분석가) : 목표로하는 업무의 범위 선정 / 명확한 업무 분석 및 설계

- 데이터 모델 설계(설계자) : 업무를 가장 잘 표현하는 단순 명료한 데이터 모델 필요 (업무의 범위의 명확한 구분)

 

▶SQL튜닝 기술이 필요한 사람

- 설계자 : SQL튜닝방법을 알고 있는 설계자가 쉽게 튜닝

- 응용 프로그램 개발자 : SQL 튜닝은 물론 물리적 구조 튜닝 병행

- 데이터베이스 관리자 : SQL튜닝 요구 및 해결방법을 정확히 숙지

 

▶튜닝에 필요한 파일들

 Oracle Alert and Trace Files 

 Alert log file★

 db상황, oracle instance가 수행시 발생하는 error등을 기록함. 

 자동으로 자주 생성

 Background process trace file★

 LGWR, DBWR, SMON, PMON, CKPT... (문제시마다 생성되므로 여러개 생성됨)

 - 파라미터 파일의 "background_dump_dest = "로 설정함.

 - 파일 이름을 보면 어떤 프로세스인지 알 수 있다. 

 User trace file

 user request에 의해서 생성됨. (여러개 생성됨.)

 - 파라미터 파일의 "user_dump_dest = "로 설정함. 

 우리가 원할 때 생성

 

 

▶일반적인 튜닝 과정 : 원하는 목표치까지 반복적으로 튜닝한다.

- 원인분석(부하), 조치(서버/SQL튜닝), 점검(부하)

- 튜닝 후에도, 시스템 상황은 항상 변화한다 : 튜닝후에도 예측지 못한 튜닝 포인트는 계속 발생하고, 시간이 지나면 사용자 및 서버 데이터량이 증가한다. 

 

 

▶SQL튜닝의 3가지 접근방법

 부하의 감소 

 - 동일한 부하를 보다 효율적인 방법으로 수행

 - 일반적인 SQL Tuning

 부하의 조정

 -부하 정도에 따라 업무 조정

 - 배치, 리포트 업무 등과 일반 업무(OLTP)를 분리

 - 응용 프로그램별, 시간대별

 부하의 병렬 수행

 - 병렬로 수행하여 응답 시간을 크게 단축

 - 과도한 사용은 일반 사용자에게 악 영향 가능성

 - 주로 배치 업무에 많이 사용됨 

 

▶ SQL튜닝실패와 대책

 SQL 튜닝 실패 - SQL튜닝을 해도 호전되지 않는 경우 

 -시스템 사이징 실패

 - 잘못된 데이터 모델링 (설계를 잘못하면 답이없어..)

 - 비 효율적인 스키마 및 프로세스 흐름

 - 개발 중에 모델 및 스키마의 변경 (설계 다 해놓고, 집을 짓고 있는데, 변경되는 상황.. 땅콩리턴?!)

 - 프로젝트 관리 미숙 및 과도한 요구

 - 업무 진행 중 SQL튜닝 마인드 부재 

 SQL 튜닝 실패 대책 - 최악의 경우, 시스템 확장이 필요하다

 - 부하 분산

 -고 비용 응용 프로그램 제외

 - CPU, 메모리, N/W 및 서버 확장

 - 서버 병렬화

  ☞ 응용 프로그램 별로 서버 분리 → 실현 불가능한 상황이 많음

  ☞ RAC(Real Application Cluster) → 동일한 DB 작업을 여러 개의 노드에서 동시 작업

 

'[기타SQL] > SQL tunning' 카테고리의 다른 글

4. oracle optimizer(미완)  (1) 2014.12.17
3. SQL 실행계획 확인 ★★★ (미완)  (0) 2014.12.16
2. SQL 처리구조  (0) 2014.12.16
Print Friendly and PDF Posted by JJ*
: