본문 바로가기

컴퓨터62

[Oracle]Index 오라클 인덱스 설계시 주의사항 [Oracle]Index 오라클 인덱스 설계시 주의사항 검색을 빠르게 도와주는 인덱스, 하지만 잘못알고 사용하면오히려 독이 될 수도 있습니다. 오라클 인덱스 설계시 주의사항을 알아보겠습니다. 설계시 주의사항 1. 조건을 만족하는 데이터 분포가 10% 미만일때 생성하는것이 좋은성능을 낼 수 있다.딱 10%라고 정해져 있지는 않지만 통상적으로 10%미만일때 인덱스가 효과를 발휘할 수 있고10%가 넘어가면 점점 그 효과는 미미해진다고합니다.예를 들어 1000페이지가 있는 책에서의 목차는 효과가 좋지만 10페이지가 있는 책에서의 목차는 그다치 쓸모가 없죠. 2. 대용량테이블에 적용하는것이 좋다.정확하진 않지만 약 20만~30만건이하의 데이터가 있는 테이블은 풀테이블 스캔을 하더라도 빠르게검색이 됩니다.(para.. 2014. 7. 22.
[Oracle]Index 오라클 인덱스(logical, physical) [Oracle]Index 오라클 인덱스(logical, physical) 책을 살때 앞쪽을 보면 항상 목차가 있기 마련이죠.이처럼 빠르게 필요한 내용을 찾기위해 인덱스는 데이터베이스에서 아주 중요합니다.인덱스의 종류는 크게 Logical, Physical 2가지로 나눌 수 있습니다. logical index physical index single indexconcanated indexunique indexnonunique indexfunction based balance*treereversebitmapiotdescending 자세한 설명은 다른 포스팅에...* 2014. 7. 22.
[Oracle]오라클 테이블 관리 재구성 방법 [Oracle]오라클 테이블 관리 재구성 방법 테이블에 많은 갱신이 일어난다면 시간이 지날수록 테이블안의 블락에 데이터들이 효율적으로 저장되지않을가능성이 높은데요 이럴때 테이블에 있는 데이터를 다시재구성해줌으로써 이런 문제를 해결 할 수 있습니다. 테이블재구성방법 1. export툴로 백업하고 테이블 drop한뒤 import로 다시넣어준다.2. CREATE TABLE......AS SELECT *.... 이러한 복제기능으로 테이블을 재생성해준다.3. 적절한 파라미터값을 할당한다.4. ALTER TABLE[table_name] SHRINK SPACE COMPACK 2014. 7. 22.
[Oracle]Parallel 오라클 병렬처리 [Oracle]Parallel 오라클 병렬처리 오라클에서는 병렬처리를 지원합니다.병렬처리란...? 보통 하나의 프로세스가 한작업을 하게되는데요한 프로세스가 여러작업을 할때엔 시분할로 나눠서 하게됩니다.동시처럼보이지만 동시작업이 아니죠.이럴때 parallel을 이용하면 여러프로세스를 만들어서동시에 작업을 할 수 있습니다.문제점은 동시에 작업을 하게되면 테이블에 있는 데이터들이순차적으로 메모리에 올라가지않고 뒤죽박죽 올라간다는 점인데요.이때문에 LARGE POOL이라는 SGA영역에서 재배열을 해줍니다.이때 LARGE POOL영역이 부족하다면 다시처음부터 작업을 해야하니 주의해주세요 11G버전에서는 PARALLEL이 FALSE로되어있어도 사용할수있다.(MEMORY TARGET으로 메모리관리할경우)수동으로 메모.. 2014. 7. 21.
[Oracle]HISTOGRAM 오라클 히스토그램 분포문제점 [Oracle]HISTOGRAM 오라클 히스토그램 분포문제점 비용기반 옵티마이저에서 중요한것이 바로 통계정보이죠.통계정보를 수집했다 하더라도 데이터간의 분포가 균등하지않고크게 차이가난다면 통계정보를 최신화 했어도 옵티마이저가 잘 따라주지않습니다.이럴때 HISTOGRAM을 이용하면 됩니다. 먼저 테이블을 분석했습니다. 위 쿼리를 실행했을때 Statistics에는 5개 rows 이지만실행계획부분의 ROWS는 294개로 불일치하는것을 볼 수 있습니다.이런경우가 칼럼의 데이터들이 균등하게 분포되어있지않고차이가 많이나는 때입니다. 이때 히스토그램을 이용해보겠습니다. 분석하는 쿼리 뒤에 FOR COLUMNS deptno SIZE 98이라는 절을 주었는데요deptno에서 독립적인 값이 갯수를 size뒤에 써주면 됩니.. 2014. 7. 21.
[Oracle]Stored outlines [Oracle]Stored outlines 오라클 기능중에 세션단위로 실행계획을 관리해 좋은쪽의실행계획을 택할 수 있는데요.Stored outlines기능입니다.실제로 이게 많이 쓰이는지는 잘 모르겠어요;; stored outline을 사용하기위해서 scott에게 권한을 주겠습니다. scott으로 로그인한뒤 테이블을 먼저 분석해보겠습니다. 먼저 CBO로 실행해보겠습니다. SESSION이름을 이렇게 지정해주면 앞으로 실행되는 실행계획은 이 세션에서 관리되어집니다. SQL문을 실행하자 EMPNO인덱스를 사용한것을 볼 수 있습니다. 이번에 RULE로 옵티마이저모드를 바꿔보겠습니다. 아까전에 변경했던 세션을 여기에 적용해보겠습니다. 원래 RBO로 분석을 할경우 우선순위가 높은 DEPT인덱스를 먼저 사용해야하지만.. 2014. 7. 21.
[Oracle]COST BASED OPTIMIZER 오라클 비용기반 옵티마이저 통계정보 [Oracle]COST BASED OPTIMIZER 오라클 비용기반 옵티마이저 오라클 7버전 부터 COST BASED OPTIMIZER라는 것이 등장했습니다.RULE BASED는 정해진 규칙으로만 실행계획을 작성했는데 COST BASED는테이블,인덱스 통계정보를 갖고 분석을 통해 좋은쪽으로 실행계획을 작성해주는 옵티마이저입니다.그렇다고 이게 최선의 방법을 제시해주느냐.. 그것은 아닙니다.옵티마이저가 도와주지만 어쨋든 SQL문을 보고 최적을 찾는것은 사람 몫입니다. ALTER SESSION SET OPTIMIZER_MODE = CHOOSE;이라 해주면 비용기반 옵티마이저 사용준비는 끝입니다.DEFAULT는 COST BASED입니다. DEPTNO와 EMPNO에 인덱스를 각각 만들어 줬습니다. AUTOTRAC.. 2014. 7. 17.
[Oracle]RULE BASED OPTIMIZER 오라클 공식기반 옵티마이저 [Oracle]RULE BASED OPTIMIZER오라클 공식기반 옵티마이저 5,6버전에서는 rule based optimizer가 기본 옵티마이저로 쓰였는데요현재는 cost based가 default죠.공식기반 옵티마이저는 말 그대로 공식대로 동작하는 옵티마이저입니다. 이 15가지 공식중에서 상위에 해당하는 것이 있으면 무조건 그것으로 실행계획을 작성하는 것이 공식기반 옵티마이저입니다.만약 같은 순위라면 AND는 왼쪽에서부터 오른쪽으로 실행하고OR는 오른쪽에서부터 왼쪽으로 실행을 원칙으로 합니다. 이외에 더 자세한 설명은여기를 참고해주세요 ALTER SESSION SET OPTIMIZER_MODE = RULE;라는 명령어로 공식기반 옵티마이저를 사용할 수 있습니다. 한가지 예시인데요 AND일때 왼쪽 부.. 2014. 7. 17.
[Oracle]V$SQLAREA SHARED POOL분석 오라클 공유풀 분석 [Oracle]V$SQLAREA SHARED POOL분석 오라클공유풀 분석 튜닝을 할때는사전 튜닝과 사후튜닝이 있습니다.사후튜닝은 고객에게 컴플레인이 들어오면 그부분을 찾아서 튜닝을 해주면 됩니다.사전튜닝은 작성된 SQL문장중에서 메모리를 가장 많이 차지하고있는것, CPU를 가장많이 사용하고있는것, 디스크 IO가 가장많은것을 찾아 미리 튜닝해주는 것입니다. 이러한 SQL은 V$SQLAREA를 찾아보면 SHARED POOL에서 저런것들을 찾아낼 수 있습니다.SHARED POOL이 작동하는 것을 짧게 설명하면SHARED POOL이 꽉 차서 더이상 SQL파싱결과를 저장할 공간이 없다면 LRU알고리즘으로 최근에 사용이 가장 안된 파싱결과를 제거하고 거기에 새로파싱한 결과를 넣어줍니다. SHARED POOL은 정.. 2014. 7. 17.