본문 바로가기

04번. IT 힌트얻기

[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 ------------------------------------ ------------------.. 더보기
[실행계획] 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.. 더보기
[실행계획] Exercise_03 ▶ 실행계획 설명 1-1. DUAL 테이블을 접근 -> 조건에 ROWNUM을 이용한다. 1-2. WORK_INF 테이블에 FULL SCAN으로 접근한다. 2. 1-1, 1-2의 결과 집합을 CARTESIAN JOIN을 통해서 연결해준다. 3. ORDER BY 순으로 SORTING을 해주고보여준다. ▶ 추가 설명 (1) FAST DUAL - Oracle 9i 에서 사용되는 DUAL의 FULL TABLE SCAN 대신 10g에서는 FAST DUAL optimization plan을 사용한다. Use DUAL Freely 아래와 같은 명령을 실제로 사용하는 개발자(또는 DBA)의 수가 얼마나 될 것이라 생각하십니까? select USER into from DUAL 아마 거의 모든 이들이 사용하고 있을 것입니다.. 더보기
[SQL 고수되기] 열한번째 이야기 출처 : 네이버지식인 노하우 http://kin.naver.com/knowhow/detail.nhn?d1id=8&dirId=8&docId=553699&qb=U1FMIOqzoOyImOuQmOq4sCDsl7TtlZzrsojsp7gg7J207JW86riw&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=go1ZH35Y7vwsstEJfvZssc--411835&sid=TozeLPJwjE4AABooIow 안녕하세요. 오랜만에 이야기를 시작합니다. 오늘 할 이야기는 지난번 이야기에서 잠깐 이야기 나누웠던 통계현황 조회에 대해 구체적으로 이야기해볼까합니다. 이거 기억하시죠? ┌────┬───┬───┬───┬───┬───┬───┬───┬────┐ │ 사번 │ 일 │ 월 │ 화.. 더보기
[SQL 고수되기] 열번째 이야기 출처 : 네이버지식인 노하우 http://kin.naver.com/knowhow/detail.nhn?d1id=8&dirId=8&docId=553302&qb=U1FM6rOg7IiY65CY6riwIC0g7Je067KI7Ke4IOydtOyVvOq4sA==&enc=utf8&section=kin&rank=1&search_sort=0&spq=0 이번 이야기에선 앞으로 많이 활용되어질 아르바이트생정보에 대해 만들어볼까합니다. 종종 발생하는 Data Migration 방식을 보여드리고저 하는데 이땐 우편번호 정보가 필요합니다. 전부 다 가지고 계신게 아니기에 그냥 간단하게 주조를 고정시키고 만드는 방법과 랜덤하게 주소를 만드는 방법 두가지로 만들겠습니다. 참고로 우편정보 필요하신분들은 하단 의견란에 글남기시면 메일로 .. 더보기
[SQL 고수되기] 아홉번째 이야기 출처 : 네이버지식인 노하우 http://kin.naver.com/knowhow/detail.nhn?d1id=8&dirId=8&docId=553087&qb=U1FMIOqzoOyImOuQmOq4sCDslYTtmYnrsojsp7g=&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=go1vx35Y7t0ssskYj7wssc--063939&sid=TozeLPJwjE4AABooIow 지난 이야기에서 함 해보시라고 한거 해보셨지? ^^ 문제) 4월 출퇴근형황 정보를기준으로 다음처럼 요일별 근무시간합을 조회해보세요 ┌────┬───┬───┬───┬───┬───┬───┬───┐ │ 사번 │ 일 │ 월 │ 화 │ 수 │ 목 │ 금 │ 토 │ ├────┼───┼───┼───┴──.. 더보기
[실행계획] Exercise_02 ▶ 계획 설명 1. WORK_INF 테이블을 Full Scan한다. - 이때 300row와 11K 만큼 Access를 하게 된다. 2. Access한 데이터를 group by를 한다. --> 위에서 HASH (GROUP BY)를 진행한다. version 10.2 에서 부터 GROUP BY가 SORT GROUP BY에서 HASH GROUP BY로 바뀌었다고 한다. 그래서 GROUP BY 한 결과가 기존에서는 SORT되어 보여주었지만 이 버전부터는 SORT되지 않은 채로 보여준다. 그래서 SORT된 결과 값을 보기위해서는 ORDER BY 절에 GROUP BY절에 설정한 것들을 추가해야 한다. 그리고 이렇게 되었을 경우에는 HASH GROUP BY가 아닌 SORT GROUP BY가 된다. ▶ 추가 설명 (Ha.. 더보기
[실행계획] Exercise_01 ◆ 여러가지 쿼리에 대해서 시험을 해 볼 것이다. 어떤 식으로 실행계획이 만들어지는지 하나하나 살펴볼 것이다. 차근차근 ... 단계를 밟아 나가자..... start ▶ 실행계획 설명 1. employees 테이블을 full scan하여 액세스한다. 이때 8 row, 96 Byte를 access한다. 2. employees 테이블을 full scan하여 액세스한다. 이때 10 row, 120 Byte를 access한다. 3. 1,2 에서 액세스한 두 테이블에 대해 union-all(중복포함)을 한다. 4. 결합된 데이터에 대해 order by 순으로 sort를 해주고 해당 데이터를 보여준다. ▶ 용어 설명 Cost 어떤 특별한 측정 단위가 아니고 비용기반 옵티마이저가 하나의 SQL에 대해 여러 개의 .. 더보기