간단명료

4.4.1 서브쿼리 변환이 필요한 이유 최근 옵티마이저는 비용을 평가하고 실행계획을 생성하기에 앞서, 사용자로부터 전달받은 SQL을 최적화에 유리한 형태로 변환하는 작업, 쿼리변환부터 진행한다. 쿼리변환은 옵티마이저가 SQL을 분석해 같은 결과 집합을 생성하면서도 더 나은 성능이 기대되는 형태로 재작성하는 것을 말한다. 서브쿼리는 하나의 SQL문 안에 괄호로 묶은 별도의 쿼리 블록을 말한다. 인라인 뷰(Inline View) : FROM 절에 사용한 서브쿼리. 중첩된 서브쿼리(Nested Subquery) : WHERE 절에 사용한 서브쿼리. 메인쿼리 컬럼을 참조하는 형태를 상관관계 있는(Correlated) 서브쿼리 라고 부른다. 스칼라 서브쿼리(Scalar Subquery) : 한 레코드 당 정확히 ..

4.3.1 기본 메커니즘 Build 단계 : 작은 쪽 테이블(Build Input)을 읽어 해시 테이블(해시 맵)을 생성한다. Probe 단계 : 큰 쪽 테이블(Probe Input)을 읽어 해시 테이블을 탐색하면서 조인한다. select /*+ ordered use_hash(c) */ * from 사원 e, 고객 c where c.관리사원번호 = e.사원번호 and e.입사일자 >= '19960101' and e.부서코드 = 'Z123' and c.최종주문금액 >= 20000해시 조인은 use_hash 힌트로 유도하며 위 SQL에 사용한 힌트는 사원 테이블 기준으로(ORDERED) 고객 테이블과 조인할 때 해시 조인 방식을 사용하라(use_hash)고 지시하고 있다. Bui..

조인 컬럼에 인덱스가 없을 때 대량 데이터 조인이어서 인덱스가 효과가 없을 때 옵티마이저는 NL 조인 대신 소트 머지 조인이나 해시 조인을 선택한다. 해시 조인을 사용할 수 없는 상황에서 대량 데이터를 조인하고자 할 때 소트 머지 조인을 사용한다. 4.2.1 SGA vs. PGA 공유 메모리 영역인 SGA에 캐시된 데이터는 여러 프로세스가 공유할 수 있지만, 동시에 액세스는 불가능하다. 따라서 액세스를 직렬화하기 위한 Lock 메커니즘으로 래치(Latch)가 존재한다. 데이터 블록과 인덱스 블록을 캐싱하는 DB 버퍼캐시는 SGA의 가장 핵심적인 구성요소이먀, 여기서 블록을 읽으려면 버퍼 Lock도 얻어야 한다. (1.3.8 https://gyujingyujin.tistory.com/13?category=..