본문 바로가기

It's all !

[Tuning] Nested Loop Join (튜닝포인트) 1. 조인 순서의 최적화 2. 연결고리(조인조건)에 대한 인덱스 생성 및 사용 3. 인덱스를 잘 활용해야 한다. -- Suppressing 의 적재적소 사용 -- 인덱스 매칭율을 고려한 인덱스 확인 -- 연결고리로 읽는 것을 확인 * JOIN 순서 제어를 위한 방법 (4가지) 1) 힌트 (*+ ORDERED *.) 2) Supprssing 3) 뷰 활용 4) FROM 절의 테이블 순서 변경 (단, RBO일 경우만 일부 가능하다.) 더보기
[Tuning] optimizer_mode 세션 별로 CBO, RBO에 대한 실행계획을 확인 하기 위해서는 실제로 ANALYZE TABLE ___ COMPUTE STATISTICS; 를 사용하는 것이 아니라 optimizer_mode를 셋팅을 한다. SQL> show parameter optimizer_mode NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ optimizer_mode string CHOOSE SQL> SQL> SQL> ALTER SESSION SET OPTIMIZER_MODE = FIRST_ROWS; Session altered. SQL> SHOW PARAMETER OPTIMIZER_MODE NAME TYP.. 더보기
[Tuning] 인덱스 매칭률 인덱스 매칭률 특정 테이블에 대해서 SQL 상의 주어진 조건으로 인해 사용될 수 있는 인덱스가 두 개 이상이라고 할 때 Optimizer는 조건에 가장 적절한 인덱스를 선택해서 사용해야 한다. 이와 같이 주어진 조건에 가장 적절한 인덱스를 선택해서 사용하고자 할 때 이용하는 원리이자 기준을 "인덱스 매칭률"이라고 한다. 인덱스 매칭률 = WHERE 절에서 1st컬럼 부터 연속된 컬럼에 대해 상수화 된 조건에 '='을 사용한 컬럼의 개수 / 인덱스를 구성하는 컬럼의 총 개수 Optimizer의 인덱스 선택 시 판단 절차 1) 주어진 조건에 대한 각 인덱스 별로 매칭률을 계산하여 매칭률이 높은 것을 우선적으로 선택 2) 인덱스 별 매칭률이 같을 경우 인덱스를 구성하는 컬럼의 개수가 많은 것을 우선적으로 선택.. 더보기
[Tuning] CBO vs RBO 사례 1. SQL분석 시 차이 [개요] Optimizer mode가 Rule base일 때와 Cost base일 때 SQL을 해석함에 있어 어떤 차이가 있는지를 구체적으로 알아 보고자 합니다. - 인덱스정보 EC_TASK : EC_TASK_PK : COURSE_CODE + TASK_NO EC_TASK_TERM : EC_TASK_TERM_PK : COURSE_CODE + YEAR + COURSE_SQ_NO + TASK_NO EC_TASK_TERM : EC_TASK_TERM_IDX00 : COURSE_CODE + TASK_NO + YEAR + COURSE_SQ_NO SQL#01_01 SELECT * FROM EC_TASK A, EC_TASK_TERM B WHERE A.COURSE_CODE = B.COURSE.. 더보기
[Tuning] SQL Trace 사용자가 실행한 SQL 문의 실행계획과 실행시 읽기, 쓰기 등 작업 부하량 검사 ▶ 사전 작업 1. timed_statistics = true SQL> show parameter timed_statistics NAME TYPE VALUE ------------------------------------ ---------------------- ------------------------------ timed_statistics boolean TRUE 2. sql_trace = true, 세션단위로 작업할수 있기때문에 생략가능 SQL> show parameter sql_trace NAME TYPE VALUE ------------------------------------ ------------------.. 더보기
[Book] 자기 앞의 生 ▶ 작가 소개 에밀 아자르 이 책을 알고 난 후에 작가를 알게 되었다. 작가를 알고 나서 이 신비스러운 작가의 내력에 대해 호기심과 관심이 생겼다. 로맹 가리라는 이름으로 많은 집필을 하며 다수의 상을 받아서 이미 프랑스 문단에서 매우 유명해진 작가는 너무 유명해진 바람에 비평가들이 자신의 책을 더 이상 흥미를 가지지도 않고, 자신의 소설에 대한 정당한 평가를 받지 못하자, 에밀 아자르라는 가공의 인물을 새로 만들어 내서 프랑스 문단에 다시 데뷔한다. 그리고 한 작가당 한 번만 받는 것이 가능하다는 콩쿠르 상을 에밀 아자르 이름으로 다시 받게 된다. 그래서 콩쿠르 상을 두 번 수상한 유일한 작가가 되어버렸다. ▶ 책을 읽는 중에 책을 절반 넘게 읽어내려가고 있다. 그런데 정말 명불허전이라고 했던가. 이 .. 더보기
[실행계획] Exercise_04 HASH JOIN 다르게 동시에 수행되는 특성과 스캔 방식이 아니라 연산에 의한 데이터 연결이라는 차이에 의해서 발생하는 것입니다. 적은 범위의 데이터라면 연결 고리와 선행 조건의 선택만 효율적으로 이루어진다면 NESTED LOOP JOIN이 유리하지만 반대의 경우나 데이터 양이 상당히 많은 경우 정렬 영역 사용에 문제가 있는 SORT MERGE JOIN 보다 HASH JOIN이 유리합니다. 일반적인 경우 OPTIMIZER 모두가 CHOOSE일 경우, NESTED LOOP JOIN인 실행계획의 가격이 불리할 때는 거의 100% HASH JOIND이 나오게 됩니다. HASH JOIN 이 관계형 데이터베이스에서 비용이 가장 많은 JOIN 인 반면 정확히 적재 적소에 사용한다면 다른 어떤 JOIN 보다 성능이.. 더보기
ROLL UP 출처 : 오라클클럽 (http://www.oracleclub.com/lecture/1845) 간단 예제 -- 먼저 GROUP BY를 사용해서 직업별로 급여 합계를 구하는 예제이다. SQL> SELECT job, SUM(sal) FROM emp GROUP BY job; JOB SUM(SAL) ---------- ---------- ANALYST 600 CLERK 3200 MANAGER 33925 PRESIDENT 5000 SALESMAN 4000 -- ROLLUP을 사용해서 직업별로 급여 합계와 총계를 구하는 예제이다. SQL> SELECT job, SUM(sal) FROM emp GROUP BY ROLLUP(job); JOB SUM(SAL ---------- ---------- ANALYST 6000 C.. 더보기
OUTER JOIN Outer Join - Join 조건을 만족하지 않는 경우에도 다른 행들을 보기 위해 사용 - 한쪽 테이블에는 해당하는 데이터가 존재하는데 다른 쪽 테이블은 데이터가 존재하지 않을 경우 모두 데이터를 출력하게 하는 조인 - 조인시킬 값이 없는 즉 null 행으로 결합하는 (데이터가 없는 table)쪽에 (+) 연산자를 사용 - (+)를 사용하는 위치는 Join할 데이터가 부족한 쪽에 위치시킴 - Outer Join 조건이 걸려있는 테이블에는 다른 조건절이 들어와도 똑같이 Outer 조인 연산자를 (+) 해주어야함 - left out join : 왼쪽 테이블이 기준 왼쪽 테이블의 자료는 모두 출럭되고 오른쪽 테이블의 자료는 연결되는 것들만 출력 왼쪽 테이블의 컬럼명 = 오른쪽 테이블의 컬럼명(+) - ri.. 더보기
[Book] 빌 브라이슨의 재밌는 세상 ▶ 책을 잡고 나서 [빌 브라이슨의 재밌는 세상]을 오늘 새벽에 처음 손에 잡았다. 우선 빌 브라이슨은 내가 지금까지 여러 사람들이 추천해서 기대는 하고 있었던 책이다. 그리고 결정적으로 만나게 된 계기는 얼마 전에 '네이버 지식인의 서재 - 대중음악가 이적' 편을 보면서이다. 아침에 출근하기 전 버스에서 1장을 읽었는데 두 가지 생각이 겹친다. 하나는 지금까지 읽었던 작가들과 다른 새로운 문체로 나에게 다가오지 않을까 하는 기대감, 나머지 하나는 내용이 너무 미국적이라는 사실이다. 그래서 어떤 사물이나 특정 상표나 식습관 그리고 문화 등에서 내게 다가오지 못하는 내용이 있다는 점이다. 하지만 전자 만으로도 충분히 만날 가치는 있다고 생각한다. 새로운 친구를 만나는 것이나 마찬가지니까. 비록 작가의 나이.. 더보기