으쌰으쌰💪/SQL

데이터 모델과 성능 - 데이터베이스 구조와 성능

_꼬마돌 2023. 8. 21. 00:17
반응형

슈퍼타입 / 서브타입 모델

1. 업무를 구성하는 데이터의 특징을 분석하여 공통점/차이점을 고려하여 효과적으로 표현할 수 있음

2. 공통의 부분을 슈퍼타입 엔티티로 모델링하고 공통으로 부터 상속받아 다른 엔티티와 차이가 있는 속성에 대해서는 별도의 서브타입 엔티티로 구분

3. 업무의 모습을 정확하게 표현하면서 물리적인 데이터 모델로 변환을 할 때 선택의 폭을 넓힐 수 있는 장점이 있다. 

 

슈퍼/서브 타입 모델의 물리데이터 모델은 데이터의 양과 트랜잭션의 유형을 기준으로 슈퍼타입, 서브타입, 개별타입으로 변환된다. 

 

슈퍼타입 / 서브타입 모델 변환 방법

슈퍼타입 기준 (Single 타입, All in One 타입)

- 슈퍼/서브타입 모델을 하나의 테이블로 변환한 것이다. (예: 고객 테이블을 하나로만 구성)

- Single타입 기준, 혹은 All in One 타입 기준이라고도 한다. 

 

서브타입 기준 (Plus 타입, Super+Sub 타입)

- 슈퍼/서브타입을 서브타입 테이블들로 변환한 것이다. (예: 개인고객, 법인고객 테이블로 구성)

- 도출된 각각의 서브타입에는 변환 전 슈퍼 엔티티에 있던 컬럼들을 공통적으로 가지고 있다. 

- Plus 타입 기준 혹은 Super+Sub 타입 기준이라고도 한다. 

 

개별타입 기준 (OneToOne 타입, 1:1 타입)

- 슈퍼/서브타입을 슈퍼, 서브타입 각각 개별 테이블로 변환한 것이다. (예: 고객, 개인고객, 법인고객 테이블로 구성)

- 슈퍼 테이블, 서브 테이블 모두 생성한 것이다. 

- OneToOne 타입 기준 혹은 1:1 타입 기준이라고도 한다. 

 

슈퍼타입 / 서브타입 데이터 모델 변환의 중요성

- 트랜잭션은 항상 슈퍼타입 기준으로 처리하는데 테이블은 개별타입으로 유지되어 UNION 연산에 의해 성능이 저하될 수 있다. => 슈퍼타입 기준으로 테이블을 구성하는 것이 유리

 

- 트랜잭션은 항상 서브타입을 기준으로 처리하는데 개별타입 혹은 슈퍼타입으로 되어 있는 경우 성능이 저하될 수 있다. => 서브타입 기준으로 테이블을 구성하는 것이 유리

 

- 트랜잭션은 항상 개별타입 기준으로 처리하는데 테이블은 슈퍼타입으로 되어 있어 불필요하게 많은 양의 데이터가 집약되어 있어서 성능이 저하되는 경우가 있다. => 개별타입으로 테이블을 구성하는 것이 유리

 

 

 

PK / FK 칼럼 순서와 성능

Pk / Fk 칼럼 순서와 성능 개요

- 테이블에 발생하는 트랜잭션 조회 패턴에 따라 PK / FK 칼럼의 순서를 조정해야 한다. 

- 물리적인 데이터 모델링 단계에서는 스스로 생성된 PK 순서 이외에 다른 엔티티로부터 상속받아 발생되는 PK순서까지 항상 주의하여 표시해야 한다. 

Pk가 복합키일 경우 칼럼순서가 성능에 영향을 미치는 이유

- 인덱스 선두 칼럼에 대한 조건이 들어와야 한다. (가능한한 '=' 조건으로)

- 인덱스 선두 칼럼에 대한 조건이 들어오지 않을 경우 인덱스 전체를 읽거나 테이블 전체를 읽게됨.

 

SELECT 문에서 ' = ' 조건이 붙는 식별자를 앞에 오게 하는 것이 좋다. 

반응형