문제점
좋은 인프라 환경이 아닌 곳에서 좋은 성능을 가진 데이터베이스를 기대하기는 분명 힘들 것이지만
그것을 해내기 위한 노력을 하는 것이 전문가라고 생각한다. 실무에서 잘못된 테이블 설계 위에서 개발된 애플리케이션들은 성능이 저하될 경우 SQL을 작성한 개발자 탓을 하는 경우가 많다. 그래서 SQL 튜닝을 위해 돈을 주고 마법을 기대하지만 사실 근본이 잘못되었기 때문에 SQL문을 튜닝하는 것 만으로는 한계가 있고, 결국 Scale UP과 Scale Out을 하면서 수많은 자본이 들어가게 될 것이다.
그럼 언제 성능이 저하될까?
1. 데이터 모델 구조 자체가 명확히 만들어지지 않았을 경우
2. 데이터가 많이 쌓여서 대용량 데이터가 된 경우
3. 무리한 인덱스를 사용하여 조회 성능이 박살난 경우
성능 데이터 모델링을 하기 위해선 어떤 작업 유형에 따라 성능 향상을 도모해야 하는지 목표를 분명하게 해야 성능 향상을 기대할 수 있다.
성능 데이터 모델링이란 성능상 이점을 목적으로 설계하여서 논리적 데이터 모델링 단계에서 정규화, 반정 규화, 테이블 통합/분할, 조인 구조, PK, FK 등을 이용하는 것이다.
성능 데이터 모델링을 위해선 다음과 같은 고려사항이 존재한다.
1. 데이터 모델링을 할 때 정규화를 정확히 수행한다.
2. 데이터 베이스의 용량을 파악한다.
3. 트랜잭션의 유형을 파악한다.
4. 파악된 용량/ 트랜잭션의 유형에 따라 반정 규화를 수행한다.
5. 이력 모델 조정, PK/FK 조정, 슈퍼/서브 타입을 조정한다.
6. 성능 관점에 집중하여 모델링한다.
정규화된 데이터 모델은 데이터를 주요 관심사별로 분산시키는 효과가 있기 때문에 그 자체로 성능을 향상하는 효과가 있다.
정규화가 완성된 데이터 모델에 대해서 각각 엔티티에 어느 정도 트랜잭션이 들어오는지 살펴볼 필요가 있다.
트랜잭션 유형을 분석하여 업무에 맞는 성능 개선을 하기 위해 비정규화를 수행하기 위해서다.
이때 엔티티에 대한 용량을 산정하는 것이 좋다. 그렇게 되면 각 테이블에 대해 어디에 데이터가 몰리는지 파악할 수 있기 때문이다. 이후 트랜잭션 유형 파악을 해야 한다. CRUD 매트릭스를 보고 파악하거나, 객체지향 모델링을 적용한다면 시퀀스 다이어그램을 보면 트랜잭션 유형을 파악하기가 용이하다.
*CRUD 매트릭스
상관 모델링
1. CRUD MATRIX 상관 모델링CRUD 는 CREATE 의 "C", READ의 "R", UPDATE의 "U", DELETE의 "D"를 의미한다.(1) 모든 엔티티타입은 CRUD가 한 번 이상..
www.gurubee.net
* 시퀀스 다이어그램
[UML] 시퀀스 다이어그램 이해하기
[UML] 클래스 다이어그램 이해하기 [UML] 시퀀스 다이어그램 이해하기 안녕하세요. 우리는 이전 포스팅에서 클래스 다이어그램에 대해서 이야기 해본적이 있습니다. 구조 다이어그램(Structural Diagra
sabarada.tistory.com
이러한 트랜잭션 유형을 파악하게 되면 SQL 문장의 조인 관계 테이블에서 데이터 조회 칼럼들을 파악할 수 있게 되어서 성능을 고려해 설계할 수 있습니다.
이렇게 얻은 정보를 통해 반정 규화를 적용해야 성능상 이점을 누릴 수 있습니다.
'Database' 카테고리의 다른 글
| 데이터 모델링 정규화 (1) (0) | 2021.04.24 |
|---|---|
| 데이터 모델링 정규화의 성능 (0) | 2021.04.23 |
| 데이터 모델링 식별자 (0) | 2021.04.23 |
| 데이터 모델링 (2) (0) | 2021.04.22 |
| 데이터 모델링 (1) (0) | 2021.04.21 |
댓글