데이터 이야기/SQL
[데이터분석 - SQL ] #1-2. 성능 데이터 모델링
sssoing-k
2022. 11. 2. 21:49
성능 데이터 모델링
: 데이터 베이스의 성능을 향상시키기 위해 설계단계부터 성능과 관련된 사항들이 모델링에 반영될 수 있도록 하는 것
순서
- 정규화 수행
- 용량 및 트랜잭션 유형 파악
- 성능을 고려한 반정규화 실행
- PK/FK 조정 등 인덱스 반영으로 성능 향상
- 성능 검증
1. 정규화
데이터 정합성을 위해 엔터티를 작은 단위로 분리하는 과정
- 데이터에 대한 중복성을 제거한다.
- 정규화를 할 수록 엔터티는 증가한다
- 데이터 입력, 수정, 삭제 성능이 향상된다.
- 엔터티 증가로 JOIN으로 인한 조회 성능저하가 발생할 수 있다.
- 제 1 정규형: 모든 속성은 하나의 값만 가져야 한다. - 유사 속성은 분리한다.
- 제 2 정규형 : 엔터티의 모든 일반 속성은 반드시 주식별자에 종속되어야 한다. - 부분 종속이 없도록 분리한다(FK)
- 제 3 정규형 : 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다. - 일반 속성끼리 종속 불가
2. 반정규화
데이터 조회 성능을 향상시키기 위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정
- 정규화를 마친 후 성능상 이슈가 있을 때 고려
- 데이터 무결성이 저해됨
1) 테이블 반정규화
- 테이블 병합 : 1:1 / 1:M일 때 모두 가능하며, 1:M은 중복된 데이터가 생길 수 있으므로 주의가 필요하다.
- 테이블 분할 : 데이터 수직 분할(1:1 관계 성립), 테이블 수평 분할(파티션 기능으로 다수의 테이블이 생성)
- 테이블 추가 : 중복 / 통계 / 이력 / 부분
2) 컬럼 반정규화
- 중복 컬럼 추가
- 파생 컬럼 추가
- 이력 테이블 컬럼 추가 : 조회 기준이 될 컬럼 추가(최신 데이터 여부)
3) 관계 반정규화 (중복 관계 추가)
3. 트랜잭션
데이터를 조작하기 위한 하나의 논리적인 작업 단위
ex) 이벤트 응모 이력 저장 / 쿠폰 발행
4. NULL
존재하지 않음. 값이 없음
- 가로연산 : SUM 등 연산에서 NULL값이 포함될 경우 결과값은 NULL이다.
- 세로연산 : COUNT 등 다른 인스턴스 데이터와 연산의 경우 NULL값을 제외한다.