티스토리 뷰

SQLD/반정규화

반정규화

prime9999 2023. 6. 11. 19:18
300x250

반정규화의 정의

반정규화란 정규화 되어 있는것을 다시 정규화 이전 상태로 돌리는 것을 말한다.

데이터의 무결성과 효율적인 DB설계를 위하여 정규화시켰던걸 다시 왜 다시 반정규화 시키는 걸까?

이러한 데이터 무결성이 위배되는 위험을 감수하고 적용하는 이유는 데이터 조회 시 디시크 I/O량이 많거나

여러테이블의 조인에 의해 성능이 저하되거나 업무적인 조회에 대한 처리성능이 중요하다고 생각 될때

부분적인 반정규화를 고려 하게 된다. 때문에 나는 적절한 정규화와 반정규화의 조화를 선호 한다.

반정규화 주의사항

- 정확한 데이터의 관리(무결성)가 중요한 관건이며, 정규화가 기본적임

- 하지만 테이블의 복잡성과 성능을 고려하여 View 생성, Partitioning 적용, 인덱스 조정, 클러스터링

적용등의 방안조사

- 그 다음 반정규화 고려 하며, 반정규화 했을 경우 지속적인 추적 관리 필요

반정규화의 적용 방법 및 절차

1. 반정규화의 대상을 조사한다.

- 자주 사용되는 테이블에 접근(Access)하는 프로세스의 수가 많고 항상 일정한 범위만을 조회하는 경우

- 대량의 데이터가 존재하고 넓은 범위의 데이터를 자주 처리하는데, 처리범위를 줄이지 않으면 성능을

보장 할 수 없는 경우

- 통계성 프로세스에 의해 통계 정보를 필요로 하는경우

- 테이블에 지나치게 많은 JOIN이 걸려 데이터 조회에 기술적 어려움이 존재하는 경우

2. 반정규화의 대상에 대해 다른 방법으로 처리할 수 있는지 검토한다.

- 지나치게 많은 JOIN이 걸려 데이터 조회에 기술적 어려움이 존재하는 경우 뷰(View)를 사용하여 해결

할 수 있음

- 응용 애플리케이션에서 로직을 구사하는 방법을 변경함으로써 성능을 향상시킬 수 있음(예: 캐쉬기술)

3. 반정규화를 적용한다.

- 반정규화 이외의 다른 성능향상 방안에 대한 고려가 충분히 이루어진 후, 반정규화를 고려하게 되었다면

다양한 방법에 의한 반정규화 기법을 적용할 수 있음(예 : 테이블, 속성, 관계의 추가, 분할제거 등)

728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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
글 보관함