티스토리 뷰
1. 슈퍼/서브타입 모델의 성능고려 방법
가. 슈퍼/서브타입 데이터 모델(Extended ER Model)의 개요
-
최근 가장 많이 쓰임
(업무를 구성하는 데이터를 공통과 차이점의 특징을 고려하여 효과적으로 표현할 수 있기 때문이다.)
- 공통의 부분 => 슈퍼타입
- 공통으로부터 상속받아 다른 엔티티와 차이가 있는 속성 => 서브타입
- 논리적 데이터 모델에서 이용되는 형태이며, 분석단계에서 많이 쓰이는 모델
-
물리적 데이터 모델로 설계시의 문제점이 나타난다.
(적당한 노하우가 없어서 나타나며, 1:1타입이 되거나
All in One 타입이 되어버려 성능 저하가 일어난다.)
나. 슈퍼/서브타입 데이터 모델의 변환
- 성능저하의 원인 3가지
n 트랜잭션은 항상 일괄로 처리하는데 테이블은 개별로 유지되어 Union 연산에 의해 성능이 저하될 수 있다.
n 트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합되어 있어 불필요하게 많은 양의 데이터가 집약되어 있어 성능이 저하되는 경우
n 트랜잭션은 항상 슈퍼+서브타입을 공통으로 처리하는데 개별로 유지되어 있거나 하나의 테이블로 집약되어 있어 성능이 저하되는 경우
-
슈퍼/서브타입의 변환기준
데이터의 양과 해당 테이블에 발생되는 트랜잭션의 유형
n 데이터가 소량 : 데이터 처리의 유연성을 고려하여 가급적 1:1 관계를 유지하는 것이 좋다.
n 데이터가 대량 : 3가지의 변화 방법이 있으며 아래에서 설명할 것이다.
다. 슈퍼/서브 타입의 데이터 모델의 변환 기술
1) 개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성(One To One) : 업무적으로 발생되는 트랜잭션이 슈퍼타입과 서브타입 각각에 대해 발생하는 것
2) 슈퍼타입+버스타입에 대해 발생되는 트랜잭션에 대해서는 슈퍼+서브타입 테이블로 구성(Plus Type)
3)
전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성
(Union ALL과 같은 SQL 구문이 성능을 저하시킬 수 있다.)
라. 슈퍼/서브타입 데이터 모델의 변환 타입 비교
구분 |
OneToOne Type |
Plus Type |
Single Type |
특징 |
개별 테이블 유지 |
슈퍼+서브타입 테이블 |
하나의 테이블 |
확장성 |
우수함 |
보통 |
나쁨 |
조인성능 |
나쁨 |
나쁨 |
우수함 |
I/O량 성능 |
좋음 |
좋음 |
나쁨 |
관리용이성 |
좋지않음 |
좋지않음 |
좋음(1개) |
트랜잭셩 유형에 따른 선택 방법 |
개별 테이블로 접근이 많은 경우 선택 |
슈퍼+서브 형식으로 데이터를 처리하는 경우 선택 |
전체를 일괄적으로 처리하는 경우 선택 |
2. 인덱스 특성을 고려한 PK/FK 데이터베이스 성능향상
가. PK/FK 컬럼 순서와 성능개요
- 인덱스의 중요성 : 데이터를 조작할 때 가장 효과적으로 처리될 수 있도록 접근경로를 제공하는 오브젝트
- PK/FK 설계의 중요성 : 데이터에 접근할 때 접근경로를 제공한다는 측면에서 중요하다. 프로젝트시 설계단계 말에 컬럼의 순서를 조정하는 것이 필요하다.
- PK 순서의 중요성 : 물리적인 데이터 모델링 단계에서는 스스로 생성된 PK 순서 이외에 다른 엔티티로부터 상속받아 발생되는 PK 순서까지 항상 주의하여 표시하도록 해야 한다.
- FK 의 중요성 : FK도 데이터를 조회할 때 조인의 경로를 제공하는 역할을 수행하므로 이에 대해 반드시 인덱스를 생성하도록 한다. (조회 조건을 고려하여 생성한다.)
나. PK컬럼의 순서를 조정하지 않을 때 성능이 저하되는 이유
(조회조건에 따라 인덱스를 처리하는 범위가 달라지게 된다.)
(맨 앞에 있는 컬럼이 제외된 상태에서 데이터를 조회할 경우 데이터를 비교하는 범위가 넓어지므로 성능 저하가 일어난다.)
(PK의 순서를 인덱스 특징에 맞게 생성하지 않고 자동으로 생성하게 되면 테이블에 접근하는 트랜잭션의 특징이 효율적이지 않은 인덱스가 생성되어 있으므로 인덱스의 범위를 넓히거나 풀 스캔(Full Scan)을 유발하여 성능이 저하된다.)
다. PK 순서를 잘못 지정하여 성능이 저하된 경우 – 간단한 오류
라. PK 순서를 잘못 지정하여 성능이 저하된 경우 – 복잡한 오류
3. 물리적 테이블에 FK 제약이 걸려있지 않을 경우 인덱스 미생성으로 성능저하
-
물리적으로는 두 테이블 사이의 FK 참조 무결성
관계가 걸려있지 않다.
(상속받은 FK에 대해 FK 인덱스를 생성함으로써 SQL 문장이 조인이 발생할 때 성능저하를 예방할 수 있다.)
'자격증 > SQLD' 카테고리의 다른 글
SQLD - SQL 기본 [관계형 데이터베이스 개요] (0) | 2017.08.02 |
---|---|
SQLD - 데이터 모델과 성능 [분산 데이터베이스와 성능] (0) | 2017.08.02 |
SQLD - 데이터 모델과 성능 [대량 데이터에 따른 성능] (0) | 2017.07.31 |
SQLD - 데이터 모델과 성능 [반정규화와 성능] (0) | 2017.07.31 |
SQLD - 데이터 모델과 성능 [정규화와 성능] (0) | 2017.07.28 |