본문 바로가기

cd database9

대용량 DB 9강 정리 (인덱스 선정) 1. 추가된 인덱스 컬럼의 역할 l Select * from tab1 where A = ‘2’ and C = 51 i. A컬럼만 인덱스가 있다면 : A의 조건에 만족하는 rowid 여러 건 확인 후 table access 함 ii. A, B, C 컬럼 결합 인덱스가 있다면 : A, C 스캔해서 나오는 1건만 조회 è 불필요한 table access를 줄일 수 있다.(성능을 좌우하는 single block I/O를 줄임) 2. 결합인덱스 컬럼 순서 결정 (위-아래 순으로 우선순위) l 조건이 항상 나오는 컬럼인 경우 그 컬럼이 앞으로 나와야 한다. l 항상 ‘=’로 조건이 나오는가? Like나 between 조건이 들어가는 경우 (선분조건) 는 앞에 나와서는 안 된다. (뒤의 컬럼이 아무리 좋아도 테이블을.. 2014. 5. 14.
대용량 DB 7강 정리 (index의 사용) l B-tree Index - 인덱스는 data 와 rowid로 구성되어 있다. - B-tree Index는 트리에서 어느 쪽으로든 밸런스를 유지시키기 위해 노력하는 알고리즘이다. - 이를 위해서는 먼저 소트 작업이 선행되어야 하고, 같은 값이면 rowid순으로 정렬되어 있다. ( rowid = block Addr + location + file Addr ) l 인덱스를 사용하지 않는 경우 - 절대 좌변을 가공하지 말것. - DNAME LIKE '%ABC%' 나 '%ABC'는 인덱스를 타지 않음. - JOB 'SALES'(부정형 비교) (비트맵 INDEX에서는 인덱스 사용가능) - DNAME IS NOT NULL (값을 모른다.. 모르는 값은 소트 불가능) (** 결합인덱스로 만들어져 있을 때는 사용 가.. 2014. 5. 3.
대용량 DB 5강 정리(lock) 5강 1. 오라클 parallel 서버(OPS) l ops의 목적 - 가용성 : 어느 상황이 되더라도 시스템은 죽지 않고 계속 사용될 수 있어야 한다. - 성능향상 - 비용절감 2. 공유 메모리 캐쉬 - DBA의 인스턴스가 start되면 메인 메모리에 SGA가 상주하게 된다. l SGA의 주요구성 1. DB block buffer 2. Shared pool area : 파싱, 실행계획, sql 테스트를 저장하는 영역, 2번 이상의 같은 쿼리를 실행하면 최초에 저장된 메모리에서 확인함. 3. 멀티 블락 I/O - Full table scan시 하나가 아닌 여러 개의 block을 동시에 조회한다. - 예를들어, User가 100개의 서버에 sql을 수행했다면, DB writer가 데이터를 DB block b.. 2014. 4. 22.
대용량 DB 4강 정리(병렬처리, DB내부구조) 1. parallel 프로세싱 l Parallel 프로세싱을 왜 사용하는가? - 복잡한 쿼리의 수행속도의 개선 - 배치작업(다량의 데이터) - 저렴한 cost의 투자로 퍼포먼스를 발휘할 수 있음. l 예제 SELECT sum(revenue), store FROM line_items WHERE profit(price, cost, units) > 0.2 GROUP BY store 이와 같은 작업을 parallel로 처리하면, 1. 각각의 데이터를 CPU별로 쪼개서 range 스캔을 함. 2. profit 함수 연산을 함. 3. group by를 위해 상점별로 range 별로 sort (** 10g이전에는 자동 sort, 이후에는 order by 따로 적용 필요) 4. 결과를 query coordination.. 2014. 4. 15.