[Project_하다]/[Project_공부]
[SQLD] 성능 데이터 모델링
브렌쏭
2024. 7. 30. 16:26
성능 데이터 모델링
DB 성능을 향상시키기 위한 데이터 모델링
모델링 시점부터 정규화, 반정규화, 인덱스, 파티셔닝 등을 고려하여 성능을 향상시킬 수 있다.
반정규화
- 정규화된 테이블을 반정규화하여 성능을 향상시킬 수 있다.
- 운영과 개발의 단순화를 위해서 중복, 통합, 분리 등을 고려하여 반정규화를 수행한다.
- 반정규화는 읽기 성능을 향상시키는 방향으로 진행한다.
- JOIN, SELECT 등
일반적으로 정규화를 하면 입력, 수정, 삭제 성능이 올라가고
반정규화를 하면 조회 성능이 올라간다.
테이블 반정규화
테이블병합
- 1:1 관계, 혹은 1:N 관계를 통합한다.
테이블분할
- 수직분할: 컬럼을 분할한다.
- 수평분할: 로우를 분할한다.
테이블 추가
- 통계정보, 로그정보 등을 별도의 테이블로 분리한다.
- 미리 데이터를 계산해서 별도로 저장해두면 조회 성능이 향상된다.
컬럼 반정규화
컬럼 추가
- 중복칼럼 추가: 조회 성능을 향상시키기 위해 중복된 컬럼을 추가한다.
- 파생칼럼 추가: 트랜젝션 시점의 성능하락을 피하기 위해 미리 계산된 값을 저장한다.
관계 반정규화
중복관계 추가
- 로우체이닝: 테이블에 데이터가 많아지면 한 로우가 여러 블록에 걸쳐 저장되는 현상
- 로우 마이그레이션: 데이터 블록에서 수정이 발생하면 수정된 데이터가 해당 블록이 아닌 새로운 블록에 저장되는 현상