- nologging : 대량의 데이터를 추출하여 옮기는 경우 redo를 최소화
- Clustering Factor : index column의 순서대로 테이블 데이타가 모여있는 정도
- Table을 저장하는 방식
- Heap Table : 데이터를 계속 적재하며 저장하는 방식
- Clustered Table : Cluster key를 기준으로 동일한 저장소에 저장
- Index Organized Table : primary key 컬럼을 기준으로 index segment에 저장
- Partitioned Table : 하나의 테이블을 둘 이상의 세그먼트로 서로 다른 테이블 스페이스에 저장
- Temporary Table
- 클러스터
- 테이블 데이터를 저장하기 위한 선택적 방식
- 인덱스 클러스터
- 해시 클러스터
- Partitioned table
- 관리상 장점 : 백업, 복구, 추가, 삭제
- 백업 : 테이블 전체를 백업하는 것이 아니라 세그먼트별로 백업 가능
- 복구 : 복구 또한 세그먼트 단위로 가능
- 추가, 삭제 -> 병렬 : 한 곳에만 데이터가 몰려있는 경우 성능이 좋지 않으므로 몰린 데이터를 나누는 것도 가능
- 성능상 장점 : 파티션 단위로 조회, 병렬
- 불필요한 파티션에 접근하지 않고 필요한 파티션만 조회
- 조인을 처리하는 경우 파티션 단위로 조인할 수 있어 성능이 좋아짐
- 병렬 처리 : 모든 데이터가 균등해야 좋음, 여러 디스크에 병렬 저장
- Range Partition
- 파티션을 나누고 각각에 들어갈 데이터의 기준을 정함(날짜 등)
- 마지막 기준은 maxvalue라고 지정함으로써 혹시라도 데이터가 들어가지 않는 경우를 예방
- select 하는 경우 파티션의 기준을 where절에서 사용하면 파티션 제거 효과를 볼 수 있음
- 값이 골고루 저장 될 수 없음 -> 나중에 spread 시켜줄 수 있음
- List Partition
- 리스트 별로 파티션을 나눔 - ex) 지역별 - '서울, 경기' , '전북, 전남, 강원' ... 등
- 값이 골고루 저장 될 수 없음
- Hash Partition
- hash 함수에 값을 넣고 리턴되는 값(위치) - ex) hash(100) -> 1, hash(200) -> 4 ...
- 파티션 갯수만 정해주면 오라클 서버가 알아서 데이터를 분배
- 파티션 키와 갯수만 정해짐
- interval-partition
- 일정한 기준값 마다 자동으로 파티션이 만들어짐
- ex) 1개월 마다 날짜에 따른 파티션이 생성
- range + hash : 값을 골고루 저장할 수 있음(range 안에 hash)
- local : 테이블 파티션 키와 인덱스 파티션 키가 같음
- 관리상에 장점
- prefixed : 인덱스 첫 번째 컬럼이 인덱스 파티션 키와 같음
- 성능상에 장점 : 파티션 제거 가능
- local prefixed : 성능이 가장 좋음
- non-prefixed
- local nonprefixed
- Global
- 베이스 테이블의 파티션 키와 다른 파티션 키를 가짐
- 관리상의 장점이 없음 -> 베이스가 깨지면 전체를 다시 만들어야 함
- 파티션 제거효과는 있음 -> 베이스 테이블과는 다른 조건을 비교할 경우 사용
- global nonprefixed는 아무런 장점이 없음
- OLTP : 트랜잭션이 만들어지는 업무
- 트랜잭션 : 한 단위로 처리 되어야할 작업의 단위(insert, update, delete 등)
- Tx -> 데이터가 쌓임
- 쌓인 데이터를 분석하기 위해 OLAP로
- 데이터의 범위가 좁음
- OLAP : 트랜잭션 없이 분석하기 위한 업무
- staging DB 과정을 통해 OLTP를 OLAP로 옮길 수 있음(CTAS, Insert Select 등)
- Data Warehousing
- DSS : 의사결정 지원 시스템
- BI : 비즈니스 인텔리젼스
- Data Mart
- Data Mining
- 의사결정을 하기 위함
- 데이터의 범위가 넓음
- composite 파티셔닝
- range-hash -> range내부에서 hash로 병렬처리 효과를 봄
- range-list
- range-range -> range내부에서 또다른 range로 나눔
- list-hash
- list-list
- list-range
- hash가 먼저 나오는 경우는 없음
- 11g partition
- Reference 파티션
- interval 파티션
- 해당 파티션만 읽을 수 있음
- select * from range_sales partition(sales_q4_1999);
'Oracle > SQL Tuning' 카테고리의 다른 글
옵티마이저 통계관리 (0) | 2020.02.06 |
---|---|
클러스터 + 연산자 (0) | 2020.02.05 |
subquery (0) | 2020.01.31 |
조인 연산자 (0) | 2020.01.30 |
Optimizer - 2 + 실행 계획 2 (0) | 2020.01.21 |