1) 데이터 조작 프로시저 성능 개선
- SQL 성능 튜닝 : DB 트랜잭션의 성능을 개선,
SQL 성능 튜닝은 데이터 조작 프로시저 성능으로 이어짐
- 목적
성능 최상/최적화
적합한 데이터베이스 파라미터 설정
SQL 문장은 가능한 한 디스크 블럭을 최소 접근
메모리 영역 보관, 조회 성능 향상
잠금 발생 최소화
배치작업, 백업작업 수행의 빠른 완료
- SQL 성능 튜닝 프로세스
데이터 모델 확인 : 테이블의 구조, 관계 확인
인덱스 컬럼 조사 : 조회 조건에 자주 사용되는 컬럼을 인덱스로 지정
인덱스 비교, 선택 : 인덱스 컬럼과 SQL에 들어오는 상수 값을 비교해서 쓸 인덱스 선택
인덱스 효율성 검증 : 단일/복합 인덱스 판단, 복합일 경우 선두 컬럼 인덱스에 대해 값이 들어오는 지 판단
드라이빙 테이블 선택 : 인덱스 이용 테이블 선택, 데이터 건수 파악, 인덱스 유형(UNIQUE, RANGE, FULL) 파악
조인 유형 선택 : NESTED LOOP, SORT MERGE, HASH 조인 중 선택
함수 인/라인 뷰 선택 : EXIST/IN, INLINEVIEW/SUBQUERY 사용, UNION/IN/OR, DECODE/SIGN함수 사용
- SQL 문장의 파싱된 정보를 찾기 위한 라이브러리 캐시 검색절차
SQL 문장에 해시함수를 적용한 결과 값으로 라이브러리 캐시와 해시버킷의 체인리스트 검색
같은 SQL 스트림을 갖는 문장 검색
일치하는 버전 검색
- DB OPTIMIZER
힌트 사용 : 항상 최적화된 실행계획을 수립하는 건 아니므로 힌트 사용
(USE_NL, USE_NL_WITH, USE_MERGE, USE_HASH)
인덱스 활용 : 인덱스가 있어도 SQL 잘못 고재로 인덱스를 사용 못하는 일을 막아야 함
NOT, NULL, NOT NULL 등 SQL operator 사용 제한
조인 방식, 순서 조정
병렬 쿼리 : 배치 작업의 경우 하나의 SQL을 여러 개의 CPU가 병렬로 분할 처리, 처리 속도 향상
SQL 바인딩 변수 사용 : 리터럴 값을 SQL에 삽입하면 프리컴파일할 때마다 재 컴파일 발생으로 속도 저하
2) SQL 부분 범위 처리
- 개념 : 조건 만족 전체 범위X, 운반단위까지만 처리 추출
- 목적 : 스캔 범위 나누어 운반 단위를 빨리 채워서 처리 속도 향상
일부만 처리하고도 정확한 결과 도출, 처리 범위가 없어도 빠른 속도를 얻기 위함
- SQL 부분 범위 처리 원칙
자격 : 논리적으로 일부만 처리한 결과가 전체처리 결과와 같을 때
부분 범위 처리를 못하는 경우 : ORDER BY가 사용 됐을 때 (인덱스를 이용해서 ORDER BY를 없앰)
UNION, MINUS, INTERSECT 등 조회 후 추가 연산했을 때
(EXISTS, NOT EXISTS, IN, NOT IN 등으로 대체)
* 부분 범위 처리
특징 : 처리할 범위가 아무리 넓어도 그 범위 중 일부만 처리
스캔 방법 : 드라이빙 조건은 만족하는 범위 차례대로
체크조건 처리방법 : 체크조건 검증 후 성공한 건 바로 운반단위로 보냄
결과추출 방법 : 운반단위가 채워지면 수행을 멈추고 결과 추출
* 전체 범위 처리
특징 : 범위가 너무 넓으면 수행속도 저하
스캔방법 : 드라이빙 조건은 만족하는 범위 모두
체크조건 처리방법 : 체크조건 검증 후 성공한 건 임시저장 공간에 저장
결과추출 방법 : 저장이 완료되면 필요한 2차가공을 한 후 운반단위만큼 추출하고 다음 요구까지 일단 멈춤
'정보처리기사 실기 > 02. 응용SW엔지니어링' 카테고리의 다른 글
[2020 정보처리기사 실기 - 통합 구현] 2. 연계 메커니즘 구성하기 (0) | 2020.03.03 |
---|---|
[2020 정보처리기사 실기 - 통합 구현] 1. 연계 데이터 구성하기 (0) | 2020.03.02 |
[2020 정보처리기사 실기 - 데이터 입출력 구현] 3. 데이터 조작 프로시저 작성하기 (0) | 2020.03.01 |
[2020 정보처리기사 실기 - 데이터 입출력 구현] 2. 물리적 데이터 저장소 설계하기 (0) | 2020.03.01 |
[2020 정보처리기사 실기 - 데이터 입출력 구현] 1. 논리 데이터 저장소 확인하기 (0) | 2020.03.01 |