일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- GitHub
- IntelliJ
- mybatis
- JavaScript
- 프로그래머스
- Git
- Java
- oracle
- error
- jquery
- 오라클
- 쿼리
- aws
- 알고리즘
- 코틀린
- 넥사크로
- kotlin
- 자바
- db
- Security
- JPA
- 스프링
- Eclipse
- 생성
- Spring
- 함수
- Vue
- 에러
- 시큐리티
- 방법
- Today
- Total
송민준의 개발노트
Oracle DB 파티션이란? 본문
파티션이란?
- 기업에서 관리하는 데이터는 정말 많은 양을 다루고 있다. 그러다보면 거대한 데이터를 가지고 있는 테이블이 존재하게 되는데(Big Transaction Table) 이는 트러블슈팅이 발생될 경우 심각한 악영향을 미칠 수 있다.
- 이러한 악영향을 예방 및 피해를 줄이고 효율적으로 관리하기 위해 테이블을 작은 단위로 나누는 것을 말한다.
파티션의 기능 정의
- 파티션은 대용량의 테이블을 여러개의 데이터 파일로 분리해 저장하는 것을 말한다.
- 테이블의 데이터가 물리적으로 분리되어 데이터 파일에 저장되면 CRUD 수행의 성능이 향상된다.
- 파티션은 각각 파티션 별로 독립적으로 관리될 수 있다. (파티션 별 백업, 복구 및 인덱스 생성 등)
- 파티션은 Oracle DB의 논리적 단위인 테이블 스페이스 간에 이동이 가능하다.
- 데이터를 조회할 떄 데이터의 범위를 줄여서 성능을 향상시킬 수 있다.
주의할 점
- 하나의 테이블을 나눠서 관리하기 때문에 세심한 관리가 요구된다.
- 파티션 구성, 관리를 잘못하여 Index Unusable 발생을 주의해야 한다.
- 파티션 키로 나뉜 테이블에 키 조건을 주지 않아 전체에 접근하지 않도록 주의해야 한다.
Partition Table 종류
1. Range Partition
- 테이블의 칼럼 중에서 값의 범위를 기준으로 여러 개의 파티션으로 데이터를 나누어 테이블스페이스에 저장하는 것이다.
- 예를 들어 급여가 있다면 급여의 범위를 지정해서 각각 여러 개의 파티션으로 나눈 것이다.
( 1000 ~ 3000 은 파티션 1, 3000 ~ 7000 은 파티션 2, 나머지는 파티션 3)
2. List Partition
- 특정 값을 기준으로 파티션을 분할하는 방법이다.
- 데이터 분포가 낮지 않고 균등하게 분포되어 있다면 유용하다. ( 예를 들면 부서 같은)
- 단일 칼럼만 가능
3. Hash Partition
- DBMS 내부적으로 해시 함수를 사용해서 데이터를 분할한다.
- 결과적으로 Range나 List와는 다르게 DBMS 이 알아서 분할하고 관리하는 것이다.
- 이력관리의 목적보단 성능 향상의 목적에서 나온 개념이다. 일정한 분포를 가진 파티션으로 나누고 균등한 데이터 분포도를 이용한 병렬처리로 퍼포먼스를 향상시킬 수 있다.
4. Composite Partition
- 파티션의 칼럼을 Main / Sub로 나누어 분할하는 방식이다.
- 버전에 따라 다양하게 조합 가능하다.( List / List, List / Hash, Rang / Hash 등)
파티션 인덱스
- 파티션 인덱스는 4가지의 유형의 인덱스를 제공한다.
1. Global Index : 여러 개의 파티션에서 하나의 인덱스를 사용한다.
2. Local INdex : 해당 파티션 별로 각자의 인덱스를 사용한다.
3. Prefixed Index : 파티션 키와 인덱스 키가 동일하다.
4. Non Prefixed Index : 파티션 키와 인덱스 키가 다르다.
'DB' 카테고리의 다른 글
Oracle Analyze란 뭘까? (0) | 2020.09.17 |
---|---|
옵티마이저란?? (0) | 2020.08.17 |
테이블의 용량 초기화 (0) | 2020.06.01 |
Nologging (0) | 2020.06.01 |
Mybatis 동적 쿼리(like 사용 및 가변 컬럼 사용) (0) | 2019.12.27 |