티스토리 뷰
반정규화의 정의
반정규화란 정규화 되어 있는것을 다시 정규화 이전 상태로 돌리는 것을 말한다.
데이터의 무결성과 효율적인 DB설계를 위하여 정규화시켰던걸 다시 왜 다시 반정규화 시키는 걸까?
이러한 데이터 무결성이 위배되는 위험을 감수하고 적용하는 이유는 데이터 조회 시 디시크 I/O량이 많거나
여러테이블의 조인에 의해 성능이 저하되거나 업무적인 조회에 대한 처리성능이 중요하다고 생각 될때
부분적인 반정규화를 고려 하게 된다. 때문에 나는 적절한 정규화와 반정규화의 조화를 선호 한다.
반정규화 주의사항
- 정확한 데이터의 관리(무결성)가 중요한 관건이며, 정규화가 기본적임
- 하지만 테이블의 복잡성과 성능을 고려하여 View 생성, Partitioning 적용, 인덱스 조정, 클러스터링
적용등의 방안조사
- 그 다음 반정규화 고려 하며, 반정규화 했을 경우 지속적인 추적 관리 필요
반정규화의 적용 방법 및 절차
1. 반정규화의 대상을 조사한다.
- 자주 사용되는 테이블에 접근(Access)하는 프로세스의 수가 많고 항상 일정한 범위만을 조회하는 경우
- 대량의 데이터가 존재하고 넓은 범위의 데이터를 자주 처리하는데, 처리범위를 줄이지 않으면 성능을
보장 할 수 없는 경우
- 통계성 프로세스에 의해 통계 정보를 필요로 하는경우
- 테이블에 지나치게 많은 JOIN이 걸려 데이터 조회에 기술적 어려움이 존재하는 경우
2. 반정규화의 대상에 대해 다른 방법으로 처리할 수 있는지 검토한다.
- 지나치게 많은 JOIN이 걸려 데이터 조회에 기술적 어려움이 존재하는 경우 뷰(View)를 사용하여 해결
할 수 있음
- 응용 애플리케이션에서 로직을 구사하는 방법을 변경함으로써 성능을 향상시킬 수 있음(예: 캐쉬기술)
3. 반정규화를 적용한다.
- 반정규화 이외의 다른 성능향상 방안에 대한 고려가 충분히 이루어진 후, 반정규화를 고려하게 되었다면
다양한 방법에 의한 반정규화 기법을 적용할 수 있음(예 : 테이블, 속성, 관계의 추가, 분할제거 등)

- Total
- Today
- Yesterday
- Java
- JPA
- 비양도 후기
- 비양도 리뷰
- SpringBoot
- 청도 미나리 식당
- 비양도 위치
- 코딩테스트
- 정규화
- SQLD
- Deadlock
- spring
- json
- 젠킨스
- API
- 청도 미나리
- Oracle
- SQL
- Query
- RDBMS
- 코테
- db
- JWT 완전정복
- CentOS
- 솔루션
- 알고리즘
- 배포자동화
- 배포
- jenkins
- mysql
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |