브렌쏭의 Veritas_Garage

[SQLD] 성능 데이터 모델링 본문

[Project_하다]/[Project_공부]

[SQLD] 성능 데이터 모델링

브렌쏭 2024. 7. 30. 16:26

성능 데이터 모델링

DB 성능을 향상시키기 위한 데이터 모델링
모델링 시점부터 정규화, 반정규화, 인덱스, 파티셔닝 등을 고려하여 성능을 향상시킬 수 있다.

반정규화

  • 정규화된 테이블을 반정규화하여 성능을 향상시킬 수 있다.
    • 운영과 개발의 단순화를 위해서 중복, 통합, 분리 등을 고려하여 반정규화를 수행한다.
  • 반정규화는 읽기 성능을 향상시키는 방향으로 진행한다.
    • JOIN, SELECT 등

일반적으로 정규화를 하면 입력, 수정, 삭제 성능이 올라가고
반정규화를 하면 조회 성능이 올라간다.

테이블 반정규화

테이블병합

  • 1:1 관계, 혹은 1:N 관계를 통합한다.

테이블분할

  • 수직분할: 컬럼을 분할한다.
  • 수평분할: 로우를 분할한다.

테이블 추가

  • 통계정보, 로그정보 등을 별도의 테이블로 분리한다.
    • 미리 데이터를 계산해서 별도로 저장해두면 조회 성능이 향상된다.

컬럼 반정규화

컬럼 추가

  • 중복칼럼 추가: 조회 성능을 향상시키기 위해 중복된 컬럼을 추가한다.
  • 파생칼럼 추가: 트랜젝션 시점의 성능하락을 피하기 위해 미리 계산된 값을 저장한다.

관계 반정규화

중복관계 추가

  • 로우체이닝: 테이블에 데이터가 많아지면 한 로우가 여러 블록에 걸쳐 저장되는 현상
  • 로우 마이그레이션: 데이터 블록에서 수정이 발생하면 수정된 데이터가 해당 블록이 아닌 새로운 블록에 저장되는 현상

'[Project_하다] > [Project_공부]' 카테고리의 다른 글

[Docker-Compose] Advanced Options  (0) 2024.08.07
[Docker] Multi Stage Build  (0) 2024.08.06
[Docker] Container  (0) 2024.08.01
[우리FISA] Delimiter, Trigger, Partition  (0) 2024.07.30
[SQLD] DATA MODELING  (0) 2024.07.29
[우리FISA] Database 개체  (0) 2024.07.29
[우리FISA] SQL, sub queries and so on..  (0) 2024.07.26
Comments