본문 바로가기

오라클/오라클 튜닝14

SQL 옵티마이저 SQL 옵티마이저 통계정보와 비용 계산 원리 #선택도(Selectivity) 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율을 말한다. 선택도 = 1 / NDV (Number of Distinct Value, 컬럼 값 종류 개수) 상품분류 컬럼에 가전, 의류, 식음료, 생활용품 4개의 값이 있을 때 선택도는 1/4 = 25% 이다. #카디널리티(Cardinality) 전체 레코드 중에서 조건절에 의해 선택되는 레코드 개수 카디널리티 = 총 로우 수 * 선택도 = 총 로우 수 / NDV 전체 레코드가 10만건이면, 카디널리티는 10만 / 4 = 2만 5천이다. 옵티마이저는 이렇게 카디널리티를 구하고, 그만큼의 데이터를 액세스하는 데 드는 비용을 계산해서 테이블 액세스 방식, 조인 순서, 조인 방식 .. 2022. 1. 30.
DML 튜닝 DML 튜닝 DML 성능에 영향을 미치는 요소 1. 인덱스 2. 무결성 제약 3. 조건절 4. 서브쿼리 5. Redo 로깅 6. Undo 로깅 7. Lock 8. 커밋 Redo Log 목적 1. Database Recovery (물리적인 디스크 오류) 2. Cache Recovery (정전 등 비정상적인 인스턴스 종료) 3. Fast Commit 사용자의 갱신내용이 메모리상의 버퍼블록에만 기록된 채 아직 디스크에 기록되지 않았지만 Redo 로그를 믿고 빠르게 커밋을 완료한다는 의미에서 이를 'Fast Commit'이라고 부른다. Redo 트랜잭션을 재현함으로써 과거를 현재 상태로 되돌리는 데 사용 Undo 트랜잭션을 롤백함으로써 현재를 과거 상태로 되돌리는 데 사용 Undo Log 목적 1. Transa.. 2022. 1. 22.
소트 튜닝 소트 튜닝 SQL 수행 도중 가공된 데이터 집합이 필요할 때, 오라클은 PGA와 Temp 테이블 스페이스를 활용한다. 소트 머지 조인, 해시 조인, 데이터 소트와 그룹핑 등이 대표적이다. 소트 수행 과정 1)메모리 소트(In-Memory Sort) : 전체 데이터의 정렬 작업을 메모리 내에서 완료하는 것을 말하며, 'Internal Sort'라고도 한다. 2)디스크 소트(To-Disk Sort) : 할당받은 Sort Area 내에서 정렬을 완료하지 못해 디스크 공간까지 사용하는 경우를 말하며, 'External Sort'라고도 한다. 소트 연산은 메모리 집악적일 뿐만 아니라 CPU 집약적이기도 하다. 부분범위 처리를 불가능하게 함으로써 OLTP 환경에서 애플리케이션 성능을 저하시키는 주요인이 되기도 한다.. 2021. 12. 11.
서브쿼리 조인 서브쿼리 조인 1. 인라인 뷰 : FROM 절에 사용한 서브쿼리 2. 중첩된 서브쿼리 : WHERE 절에 사용한 서브 쿼리 3. 스칼라 서브쿼리 : 한 레코드당 정확히 하나의 값을 반환하는 서브쿼리다. 주로 SELECT-LIST에서 사용하지만 몇 가지 예외사항을 제외하면 컬럼이 올 수 있는 대부분 위치에 사용할 수 있다. 필터 오퍼레이션 서브쿼리를 필터 방식으로 처리하기 위한 힌트 no_unnest. 필터 오퍼레이션은 기본적으로 NL 조인과 처리 루틴이 같다. NL조인과 차이점은 필터는 캐싱기능을 갖는다는 점이다. 서브쿼리를 수행하기 전에 항상 캐시부터 확인한다. 필터 서브쿼리는 메인쿼리에 종속되므로 조인 순서가 고정된다. 항상 메인쿼리가 드라이빙 집합이다. 서브쿼리 Unnesting 힌트는 unnest.. 2021. 12. 11.