데이터 이야기/SQL

[데이터분석 - SQL ] #1-2. 성능 데이터 모델링

sssoing-k 2022. 11. 2. 21:49

 

성능 데이터 모델링
: 데이터 베이스의 성능을 향상시키기 위해 설계단계부터 성능과 관련된 사항들이 모델링에 반영될 수 있도록 하는 것

 

순서
  • 정규화 수행
  • 용량 및 트랜잭션 유형 파악
  • 성능을 고려한 반정규화 실행
  • PK/FK 조정 등 인덱스 반영으로 성능 향상
  • 성능 검증

 

1. 정규화

데이터 정합성을 위해 엔터티를 작은 단위로 분리하는 과정
  • 데이터에 대한 중복성을 제거한다.
  • 정규화를 할 수록 엔터티는 증가한다
  • 데이터 입력, 수정, 삭제 성능이 향상된다.
  • 엔터티 증가로 JOIN으로 인한 조회 성능저하가 발생할 수 있다.

 

  1. 제 1 정규형: 모든 속성은 하나의 값만 가져야 한다. - 유사 속성은 분리한다.
  2. 제 2 정규형 : 엔터티의 모든 일반 속성은 반드시 주식별자에 종속되어야 한다. - 부분 종속이 없도록 분리한다(FK)
  3. 제 3 정규형 : 주식별자가 아닌 모든 속성 간에는 서로 종속될 수 없다. - 일반 속성끼리 종속 불가

 

 

2. 반정규화

데이터 조회 성능을 향상시키기 위해 데이터의 중복을 허용하거나 데이터를 그룹핑하는 과정
  • 정규화를 마친 후 성능상 이슈가 있을 때 고려
  • 데이터 무결성이 저해됨

 

1) 테이블 반정규화

  • 테이블 병합 : 1:1 / 1:M일 때 모두 가능하며, 1:M은 중복된 데이터가 생길 수 있으므로 주의가 필요하다.
  • 테이블 분할 : 데이터 수직 분할(1:1 관계 성립), 테이블 수평 분할(파티션 기능으로 다수의 테이블이 생성)
  • 테이블 추가 : 중복 / 통계 / 이력 / 부분

 

2) 컬럼 반정규화

  • 중복 컬럼 추가
  • 파생 컬럼 추가
  • 이력 테이블 컬럼 추가 : 조회 기준이 될 컬럼 추가(최신 데이터 여부)

 

3) 관계 반정규화 (중복 관계 추가)

 

 

3. 트랜잭션

데이터를 조작하기 위한 하나의 논리적인 작업 단위

ex) 이벤트 응모 이력 저장 / 쿠폰 발행

 

 

4. NULL

존재하지 않음. 값이 없음
  • 가로연산 : SUM 등 연산에서 NULL값이 포함될 경우 결과값은 NULL이다.
  • 세로연산 : COUNT 등 다른 인스턴스 데이터와 연산의 경우 NULL값을 제외한다.