2. 소프트웨어 개발
2.1 데이터 입출력 구현
2.1.4 데이터 조작 프로시저 최적화
1. 쿼리성능 측정
데이터 조작 프로시저 최적화는 데이터베이스에서 프로시저에 있는 SQL의 실행 계획을 분석하여 시간이 오래걸리는 부분을 수정하여 최소의 시간으로 원하는 결과를 얻도록 프로시저를 수정하는 활동이다.
이를 수행하기 위해서는 쿼리 성능 측정 방법을 알고 있어야 한다.
관계형 데이터베이스 특히 Oracle의 쿼리 성능을 측정하는 방법에는 크게 두가지 방법이 있다. TKPROF 명령어와 EXPLAIN PLAN이 그것이다.
1.1 관계형 데이터베이스에서 SQL 처리 이해
1. SQL 처리 흐름
관계형 데이터베이스에서 SQL 구문은 통계자료를 기반으로 옵티마이저가 최적의 수행경로를 찾고 이를 기반으로 데이터를 실행한다.
2. 쿼리 성능 최적화를 위한 고려사항
개발자는 SQL 특성을 충분히 이해하고 SQL문을 적절히 구사할 수 있는 기본적인 능력을 갖추어야 한다.
개발자는 SQL 작성 시 옵티마이저의 일련의 행위를 이해하고 있어야 한다.
구문분석 단계에서 옵티마이저의 실행계획에 따라서 실행 속도의 차이는 크게 날 수 있다.
옵티마이저의 실행계획이 비정상적이라면 개발자는 HInt 같은 조건을 부여하여 실행계획을 수정 할 수 있다.
1.2 TKPROF 기반의 쿼리 성능 측정
1. TKPROF 란?
Oracle DBMS에서 실행되는 SQL문장에서 분석정보를 제공하여 개발자가 특정 SQL문장을 어떻게 사용해야 할 것인지에 대한 가이드라인을 제공하는 도구이다.
2. TKPROF 결과로 파악할 수 있는 분석정보 내용
Call : 커서 상태에 따라 Prase, Excute, Fetch 3개의 Call로 나누어 각각의 통계 정보를 보여준다.
- Prase : 커서를 파싱하고 실행계획을 생성하는 통계
- Execute : 커서의 실행 단계에 대한 통계
- Fetch : 레코드를 실제로 Fetch하는 통계
Count : Parse, Execute, Fetch 각 단계가 수행된 횟수
CPU : 현재 커서가 각 단계에서 사용한 CPU 시간
Elapsed : 현재 커서가 각 단계의 시작에서 종료까지 총 경과 시간
Disk : 물리적인 디스크로부터 읽은 블록 수
Rows : 각 단계에서 읽거나 갱신한 처리 건수
3. TKPROF를 활용한 Trace 유형
Instancd level 추적 : 모든 SQL 수행에 대한 Trace 파일을 생성하여 부하가 많다.
Session level 추적 : 특정 프로세스별로 추적 파일을 생성한다.
Instance level로 모든 SQL을 Trace하는 경우는 거의 없고 , Session level을 일반적으로 활용한다.
Trace를 Enable하는 것은 DB부하가 수반되므로 필요한 경우를 제외하고는 Disable하는 것이 좋다.
4. Trace 관련 파라미터 설정
Tkprof를 통하여 트레이스 설정을 on하면 user_dump_desk 파라미터로 지정된 서버 디렉터리 밑에 확장자가 .trc파일로 생성된다.
5. Trace 관련 파라미터 설정 확인 방법
시스템 사용자 권한으로 DB connect : sqlplus "/ as sysdba"
SQL Mode에서 show parameter 또는 show parameter parameter_name
1.3 TKPROF 활용방법
1. 적용 명령어
TKPROF는 SQL Trace가 생성한 Trace 파일을 분석하여 사용자가 읽을 수 있는 형태로 변환 시켜주는 Oracle 제공 도구이다.
2. 명령어 활용 예시
tkprof oral_219.trc 219.1st explain=sctt/tiger
3.관련정보 파악 절차
Data Divtionary 변경
SQL > Analyze table table 명 extimate(compute) statistics;
환경변수 점검
SQL > show parameter parameter_name (특히 user_dump_dest)
해당 SQL과 관련된 Index 정보파악
SQL > select*from user_ind_column where table_name='emp';
1.4 EXPLAIN PLAN 기반 쿼리 성능 측정
1. EXPLAIN PLAN이란?
EXPLAIN PLAN은 사용자들이 SQL문의 액세스 경로를 확인하여 성능개선을 할 수 있도록 SQL문을 분석하고 해석하여 실행계획을 수립하고, 관련 테이블에 저장하도록 지원해 주는 도구이다.
2. EXPLAIN PLAN준비
해당 사용자로 DB접속하여 PLAN Table생성
1.5 SQL 성능 개선 순서
1. 문제 있는 SQL 식별
문제 있는 SQL을 식별하기 위해서는 애플리케이션의 성능을 관리하거나 모니터링 하기 위한 툴인 APM 등을 활용한다.
Oracle의 경우, TKPROF 또는 SQL_Trace와 같은 유틸리티를 사용한다.
2. 옵티마이저 통계 확인
옵티마이저는 개발자가 작성한 SQL을 가장 빠르고 효율적으로 수행할 최적의 처리경로를 생성해 주는 데이터베이스 핵심 모듈이다.
3. SQL문 재구성
가능한 한 where 절을 많이 써서 범위가 아닌 특정 값 지정으로 범위를 줄여 처리속도가 빠르도록 한다.
Where 절의 Column에 연산자를 사용하여 Column변경이 발생하면 인덱스를 활용하지 못하게 됨을 이해하여 Column 변경 연사자를 쓰지 않는다.
옵티마이저가 비정상적인 실행계획을 수립하여 처리되면, Hint로서 옵티마이저의 액세스 경로 및 조인 순서를 제어한다.
4. 인덱스 재구성
성능에 중요한 액세스 경로를 고려하여 인덱스화 한다.
실행계획을 검토하여 기존 인덱스의 열 순서를 변경하거나 추가 할 수 있도록 한다.
인덱스 추가 시 정상적으로 처리되고 있던 다른 SQL에 심각한 영향을 줄 수 있으므로 주요 SQL 질의 결과를 함께 검토한다.
5. 실행계획 유지관리
데이터베이스 버전 업그레이드, 데이터 전환 등 시스템 환경의 변경 사항 발생 시에도 실행계획이 유지되고 있는지 모니터링, 관리한다.
2. 소스코드 인스펙션
데이터 조작 프로시저 소스코드 인스펙션은 데이터베이스 성능 향상을 위하여 프로시저 코드를 보면서 성능 문제점을 개선해 나가는 활동이다.
2.1 SQL PLUS에서 Stored Procedure 소스 확인 방법
1. USER_SOURCE 데이터 사전을 이용
사용자가 만든 모든 프로시저를 보여줌
2. 프로시저 소스 확인
프로시저 소스는 USER_SOURCE의 text 조회를 통하여 확인한다.
2.2 SQL 코드 인스펙션 대상
1. 사용되지 않은 변수
2. 사용되지 않은 서브쿼리
3. NULL 값과 비교
4. 과거의 데이터타입을 이용
2.3 SQL 코드 인스펙션 절차
1. 계획 : 문제되는 SQL 코드 선별, 문제점 인식 및 인스펙션 참여자 선정
2. 개관 : SQL 코드 문제점 공유, 계획 및 방법 공유
3. 준비 : 각자 SQL 소스 코드 분석, 문제점 확인
4. 검사 : 공식적인 SQL인스펙션 수행, 문제점 토의
5. 재작업 : SQL 소스 코드 수정 및 실행 시간 재 측정
6. 추적 : 개선 효과 분석
'자격증 > 정보처리기사' 카테고리의 다른 글
| 정보처리기사 16일차 (0) | 2021.01.27 |
|---|---|
| 정보처리기사 15일차 (0) | 2021.01.25 |
| 정보처리기사 13일차 (0) | 2021.01.20 |
| 정보처리기사 12일차 (0) | 2021.01.20 |
| 정보처리기사 11일차 (0) | 2021.01.19 |

















