본문 바로가기

오라클16

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.
계층형 쿼리 계층형 쿼리 계층 쿼리 구조 Syntax START WITH - 계층 질의의 루트(부모행)로 사용될 행을 지정 한다. - 서브쿼리를 사용할 수도 있다. CONNECT BY - 이 절을 이용하여 계층 질의에서 상위계층(부모행)과 하위계층(자식행)의 관계를 규정 할 수 있다. - PRIOR 연산자와 함께 사용하여 계층구조로 표현할 수 있다. - CONNECT BY PRIOR 자식컬럼 = 부모컬럼 : 부모에서 자식으로 트리구성 (Top Down) - CONNECT BY PRIOR 부모컬럼 = 자식컬럼 : 자식에서 부모로 트리 구성 (Bottom Up) - CONNECT BY NOCYCLE PRIOR : NOCYCLE 파라미터를 이용하여 무한루프 방지 - 서브쿼리를 사용할 수 없다. LEVEL Pseudocol.. 2022. 1. 18.
소트 튜닝 소트 튜닝 SQL 수행 도중 가공된 데이터 집합이 필요할 때, 오라클은 PGA와 Temp 테이블 스페이스를 활용한다. 소트 머지 조인, 해시 조인, 데이터 소트와 그룹핑 등이 대표적이다. 소트 수행 과정 1)메모리 소트(In-Memory Sort) : 전체 데이터의 정렬 작업을 메모리 내에서 완료하는 것을 말하며, 'Internal Sort'라고도 한다. 2)디스크 소트(To-Disk Sort) : 할당받은 Sort Area 내에서 정렬을 완료하지 못해 디스크 공간까지 사용하는 경우를 말하며, 'External Sort'라고도 한다. 소트 연산은 메모리 집악적일 뿐만 아니라 CPU 집약적이기도 하다. 부분범위 처리를 불가능하게 함으로써 OLTP 환경에서 애플리케이션 성능을 저하시키는 주요인이 되기도 한다.. 2021. 12. 11.