반응형

RDBMS

1. Oracle과 Mysql 비교

  Oracle Mysql
구조 DB 서버가 통합된 하나의 스토리지를 공유 DB서버 마다 독립적인 스토리지를 할당
조인방식 nested loop join, hash join, sort merge join 제공 nested loop join 제공
확장성 별도의 DBMS 설치해 사용할 수 없음 별도의 DBMS를 설치해 사용할 수 있음
메모리 메모리 사용율이 커서 최소 수백 MB이상이 되어 설치가능 메모리 사용율이 낮아서 1MB 환경에서도 설치 가능
구문이 상이함 (null 체크, 현재 시간, 페이징 처리등)

 

2. Index

2.1 인덱스란?

정의  쉽게 찾아 볼수 있도록 일정한 순서에 따라 놓은 목록
목적  원하는 값을 빠르게 찾는것이 목적(select 하기 위함, where절에 사용해야 의미가 있음)
특징  항상 최신 상태를 유지하고, 인덱스도 하나의 데이터베이스 객체로 약 10%정도 저장용량이 필요함
 인덱스를 저장할때 B-TREE 자료 구조를 사용함

※ B-Tree 자료구조

 데이터를 추가 할때 인덱스가 있을 경우 페이지 분할이 발생 할 수 있어 속도 이슈가 생길 수 있음.

 

2.2 인덱스 적용 기준

카디널리티가 높은(중복도가 낮은) 컬럼

where, join, order by 절에 자주 사용되는 컬럼

insert, update,delete가 자주 발생하지 않는 컬럼

규모가 작지 않은 테이블

 

2.3 클러스터링 인덱스

primary key나 not null과 unique로 지정할 수 있음(primary key가 우선순위가 높음)

실제 데이터 자체가 저장되고 테이블당 1개만 존재가 가능

 

2.4 논클러스터링 인덱스(보조 인덱스, 세컨더리 인덱스)

unique나 unique index, index로 지정이 가능

별도의 인덱스 페이지를 생성하고 테이블당 여러개가 존재 가능

※ 실제 데이터 페이지는 그대로 두고 리프페이지에서 실제 데이터 페이지 주소를 담고 있음

 

2.5 다수의 인덱스

※ 논클러스터링 인덱스로 쿼리 조회 과정

 실제 논클러스터링 인덱스 페이지에선 데이터페이지 주소가 아닌 클러스터링된 컬럼 값을 가지고 있어서 그 컬럼값으로 클러스터링 인덱스 페이지에서 루트페이지를 통해 리프페이지에서 조회함

 데이터 추가시 페이지 분할이 일어나면 많은 논클러스터링 데이터 페이지주소가 변경 될 수 있기 때문에 페이지주소가 아닌 컬럼 값을 가지고 있음

 

3. Join의 수행 원리 3가지

3.1 Nested Loop Join

2중 for문과 비슷

1:N의 관계일 때 1에 해당되는 소량의 데이터를 가진 테이블을 outer table로 설정, N에 해당되는 대량의 데이터를 가진 테이블을 inner table로 설정 해야 조회 속도가 빠름

인덱스에 의한 랜덤 엑세스를 기반으로 하고 있기 때문에 대량 데이터 처리시 불리함

outer table에 조인을 위한 적절한 인덱스가 생성되어있어야함

다수의 트렌젝션을 처리하는 온라인 트렌잭션인 OLTP성 환경에 적합

※ outer table = driving 테이블, inner table = driven table

 

3.2 Sort Merge Join

2중 for문이지만 join 컬럼 기준으로 sorting 후 join 시킴

join에 적절한 인덱스가 없을 경우 사용

대용량 자료를 join할때 사용

Equal join이 아닌 범위로 join 할 경우 사용(범위 join)

인덱스 사용에 따른 랜덤 엑세스의 오버헤드가 많은 경우 사용

 

3.3 Hash Join

• inner table이 대용량일 때 outer join을 bulid input으로 삼아서 hash영역에 저장

※ hash 영역은 PGA(메모리)영역이기 때문에 처리속도가 빠름

  Hash영역으로 올라갈때 join 컬럼을 기준으로 Hash function이 적용 되기 때문에 key 컬럼에 중복값이 적을 수록 유리

배치에서 쓰면 좋은 수행원리, 대용량 table join 시 유리

Hash 영역에 들어간 테이블 사이즈가 너무 크면 PGA영역의 메모리를 넘어 디스크영역을 사용하기 때문에 성능에 불리

반응형

+ Recent posts