1. 튜닝방법론 및 SQL처리구조
[기타SQL]/SQL tunning 2014. 12. 16. 10:44 |
튜닝 |
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 |