2. 데이터 모델과 성능
2-5. 데이터베이스 구조와 성능
(1) 슈퍼/서브타입 데이터 모델
- 논리적 데이터 모델에서 주로 이용(= 분석 단계에서 많이 쓰임)
- 물리적 데이터 모델로 설계 시 문제 발생!
- 슈퍼타입 : 공통 부분을 슈퍼타입으로 모델링
- 서브타입 : 공통으로부터 상속받아 다른 엔터티와 차이가 있는 속성만 모델링
(2) 데이터베이스 성능 저하 원인 3가지
- 트랜잭션 : 전체를 일괄처리
테이블 : 개별로 유지 ⇒ Union 연산에 의해 성능 저하 - 트랜잭션 : 슈퍼+서브타입 공통 처리
테이블은 개별로 유지 ⇒ 조인에 의해 성능 저하 - 트랜잭션 : 서브타입만 개별로 처리
테이블은 하나로 통합 ⇒ 불필요하게 많은 데이터 집적
(3) 슈퍼/서브 타입의 변환 기준
- 데이터가 소량일 경우 : 데이터 처리 유연성 고려해 1:1 관계를 유지
- 데이터가 대량일 경우
- 전부 개별 테이블로 구성
- 슈퍼+서브타입 테이블로 구성
- 하나의 테이블로 구성
(4) 슈퍼/서브 타입의 데이터 모델 변환 기술
- 개별로 발생되는 트랜잭션
⇒ 개별 테이블로 구성 (One to One type) - 슈퍼+서브타입으로 발생되는 트랜잭션
⇒ 슈퍼+서브타입 테이블로 구성 (Plus type) - 전체를 하나로 묶어 발생하는 트랜잭션
⇒ 하나의 테이블로 구성 (Single type) - 쪼개질수록, { 확장성↑ // Disk I/O 성능↑ // 조인 성능↓, // 관리 용이성↓ }
(5) PK / FK 컬럼 순서 및 성능
- PK/FK 컬럼 순서의 중요성 인지 X ⇒ 데이터 모델링된 그 상태대로 DDL을 생성 ⇒ 성능 저하
- 인덱스 중요성
- 데이터 조작 시 가장 효과적으로 처리될 수 있는 접근 경로 제공 오브젝트 앞쪽에 위치한 속성값(컬럼)이
비교자로 있어야 인덱스가 좋은 효율을 냄 - PK / FK 설계 중요성 : 데이터 접근 시 접근경로 제공, 설계단계 마지막에 컬럼 순서를 조정
- PK 순서 중요성 : 물리적 모델링 단계에서 스스로 생성된 PK 외에 상속되는 PK 순서도 중요
- FK 순서 중요성 : 조인을 할 수 있는 수단이 됨(= 경로) , 조회 조건 고려해서 반드시 인덱스 생성
(6) 인덱스 액세스 범위 좁히는 가장 좋은 방법
- PK가 여러 개일 때, Where절에서 사용하는 조건용 컬럼들이 우선순위가 되어야 함
- ‘=’ EQUAL조건 (동등조건)에 있는 컬럼이 제일 앞으로
- BETWEEN, IN (범위조건)에 있는 컬럼이 그 다음순위
- 나머지 PK는 상관없음 (id값 등 상관X)
(7) PK 순서를 조정하지 않으면 성능 저하되는 이유
- 조회 조건(WHERE)에 따라 인덱스를 처리하는 범위가 달라짐
- PK의 순서를 인덱스 특징에 맞게 생성하지 않고 자동으로 생성하면,
테이블에 접근하는 트랜잭션이 인덱스 범위를 넓게 하거나 Full Scan을 유발
(8) 물리적 테이블에 FK 제약이 걸려있지 않은 경우
- 인덱스 미생성으로 생긴 성능 저하
⇒ 물리적으로 두 테이블 사이 FK 참조 무결성 관계를 걸어 상속받은 FK에 인덱스 생성
'CERTIFICATION > SQLD' 카테고리의 다른 글
[SQLD/데이터 모델과 성능]2-7. 분산 데이터베이스 적용 기법 (0) | 2024.02.27 |
---|---|
[SQLD/데이터 모델과 성능]2-6. 분산 데이터베이스와 성능 (0) | 2024.02.27 |
[SQLD/데이터 모델과 성능]2-4. 대량 데이터에 따른 성능 (0) | 2024.02.27 |
[SQLD/데이터 모델과 성능]2-3. 반정규화와 성능 (0) | 2024.02.27 |
[SQLD/데이터 모델과 성능]2-2. 정규화와 성능 (0) | 2024.02.27 |