6.1 기본 DML 튜닝 6.1.1 DML 성능에 영향을 미치는 요소 인덱스 무결성 제약 조건절 서브쿼리 Redo 로깅 Undo 로깅 Lock 커밋 ex) 100만개 테이블 A 인덱스 유무 -. 인덱스 없을때 : 4초 -. 인덱스 2개일때 : 38초 -> 인덱스 두개의 영향력이 이 정도로 크다. ex) 제약조건 + 인덱스 유무 Redo 로깅과 DML 성능 Redo 로그의 세 가지 목적 Database Recovery Cache Recovery (Instance Recovery 시 roll forward 단계) Fast Commit Undo 용도 Transaction Rollback Transaction Recovery (Instance Recovery시 rollback단계) Read Cnsistency ..
5.1.1 소트 수행과정 메모리 소트(In-Memory Sort) : 전체 데이터의 정렬 작업을 메모리 내에서 완료하는 것을 말하며, Internal Sort라고도 한다. 디스크 소트(To-Dist Sort) : 할당받은 Sort Area 내에서 정렬을 완료하지 못해 디스크 공간까지 사용하는 경우를 말하며, External Sort 라고도 한다. 5.1.2 소트 오퍼레이션 (1) Sort Aggregate -. 전체 로우 대상으로 수행되며, 실제로 데이터를 정렬하지는 않고, 한 로우를 읽으면서 해당값을 찾는다. ex) min,max, count (2) Sort Order by -. 말그대로 정렬과정을 통해서 데이터를 정렬한다. (3) Sort Group by -. 그룹별 집계를 수행할 때 사용 -. 정렬..
4.1.1 NL 조인 기본메커니즘 -. 일반적으로 NL조인은 Outer와 Innser 양쪽 테이블 모두 인덱스를 이용한다. -. 프로그래밍에서 Nested Loop 구조랑 같음 4.1.2 NL 조인 샐행계회 제어 -. use_nl 힌트 사용 -. B와C와 조인할때는 NL조인, D와 조인할떄는 Hash조인 4.1.3 NL 조인 수행 과정 분석 -. 조인 query 문 실행 순서 예시 4.1.4 NL 조인 튜닝 포인트 -, 사원X_1인덱스를 읽고 사원 table에서 엑세스 필터링하는 비율이 높다면 필터링 되는 컬럼을 사원_X1에 추가하는방안 고려 -. 고객_X1인덱스를 일고 고객 table에서 엑세스 필터링하는 비율이 높다명 필터링 되는 컬럼을 고객_X1에 추가하는 방안 고려 -. 맨 처음 액세스 하는 사원..
※ ROWID : 오브젝트 번호, 데이터파일 번호, 블록번호 DBA : 데이터파일번호 + 블록번호 3.1.2 인덱스 클러스터링 팩터 -. 클러스터링 팩터(Clustering Factor, 이하 'CF')는 '군진성 계수', 특정 컬럼을 기준으로 같은 값을 갖는데이터가 서로 모여있는 정도를 의미한다. -. 인덱스 ROWID로 테이블을 엑세스할 때, 오라클은 래치 획득과 해시 체인 스캔 과정을 거쳐 어렵게 찾아간 테이블 블록에 대한 포인터(메모리 주소값)를 바로 해제하지 않고 일단 유지한다. 이를 버퍼 Pinning이라고 부른다. -. 이 상태에서 다음 인덱스 레코드를 읽었는데, 마침 직전과 같은 테이블 블록을 가르킨다. 그러면 래치 획득과 해시 체인 스캔 과정을 생략하고 바로 테이블 블록을 읽을 수 있다...
2.1.1 미리보는 인덱스 튜닝 SQL 튜닝은 랜덤 I/O와의 전쟁 -. 데이터베이스 성능이 느린이유는 디스크 I/O 때문이다. -. Disk I/O중에 랜덤 I/O가 중요 2.1.2 인덱스 구조 -. DBMS는 일반적으로 B*Tree 인덱스를 사용 ※인덱스 탐색 과정 -. 수직적탐색 : 인덱스 스캔 시작점을 찾는 과정 -. 수평적탐색 : 데이터를 찾는 과정 2.1.5 결합 인덱스 구조와 탐색 -. 인덱스 선두 컬럼을 모두 "=" 조건으로 검색할 때는 어느 컬럼을 인덱스 앞쪽에 두든 블록 I/O 개수는 같으므로 성능도 같다. -. Excel fillter 기능으로 착각하면 안된다. -. B-Tree 구조로 되어 있는 Index는 루트에서 리프 블록까지 높이(dept)는 항상 같다. 2.2.2 인덱스를 R..
1.1.2 SQL 최적화 1. SQL 파싱 -. 파싱 트리 생성 : SQL 문을 이루는 개별 구성요소를 분석해서 파싱 트리 생성 -. Syntax 체크 : 문법적 오류가 없는지 확인 -. Semantic 체크 : 의미상 오류가 없는지 확인 2. SQL 최적화 -. 데이터 딕셔너리(Data Dictionary)에 미리 수집해 둔 오브젝트 통계 및 시스템 통계정보를 이용해 각 실행계획의 예상비용을 산정하고 최저 비용을 나타내는 실행계획을 선택한다. 3. 로우 소스 생성 -. SQL 옵티마이저가 선택한 실행경로를 실제 생행 가능한 코드 또는 프로시저 형태로 포맷팅 하는 단계. 로우 소스 생성기(Row-Source Generator)가 그 역할을 맡는다. ※ 부록 2. AUTO Trace 1. set autot..