제3절_반정규화와_성능
2012.03.04 11:02
제3절 반정규화와 성능
1.반정규화를 통항 성능향상 전략
가.반정규화의 정의
반정규화 : 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리등을 수행하는 데이터 모델링 기법.
반정규화를 기술적으로 수행하지 않은경우 다음과 같은 현상이 발생할 수 있음
- 성능이 저하된 데이터베이스가 생성될 수 있다.
- 구축단계나 시험단계에서 반정규화를 적용할 때 수정에 따른 노력비용이 많이 들게 된다.
무분별하게 칼럼의 반정규화를 많이 하게 되는 것은 데이터에 대한 무결성을 깨드리는 결과를 초래함. → 무결성을 보장할 수 있는 방법을 고려한후 반정규화를 해야함
1.반정규화 대상 조사
- 자주 사용되는 테이블에 접근하는 프로세스의 수가 많고 항상 일정한 범위만을 조회하는 경우
- 테이블에 대량의 데이터가 있고 대량의 데이터 범위를 자주 처리하는 경우에 처리범위를 일정하게 줄이지 않으면 성능을 보장할 수 없을 경우
- 통계성 프로세스에 의해 통계 정보를 필요로 할때 별도의 통계테이블을 생성한다.
- 테이블에 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려운 경우
- 지나치게 많은 조인이 걸린경우 → view를 사용한 단순화
- 대량의 데이터 처리 → 파티션 or 클러스터
- 어플리케이션 레벨에서 중간 데이터 캐쉬
가.테이블 반정규화
나.칼럼 반정규화
다.관계반정규화
3.정규화가 잘 정의된 데이터 모델에서 성능이 저하될 수 있는경우
가장 최근에 변경된 전화번호, 메일주소, 위치를 가져오는 쿼리
SELECT A.공급자명, B.전화번호, C.메일주소, D.위치
FROM 공급자 A, (SELECT X.공급자번호, X.전화번호
FROM 전화번호 X, (SELECT 공급자번호, MAX(순번) 순번
FROM 전화번호
WHERE 공급자번호 BETWEEN '1001' AND '1005'
GROUP BY 공급자번호) Y
WHERE X.공급자번호 = Y.공급자번호
AND X.순번 = Y.순번) B,
(SELECT X.공급자번호, X.메일주소
FROM 메일주소 X, (SELECT 공급자번호, MAX(순번) 순번
FROM 메일주소
WHERE 공급자번호 BETWEEN '1001' AND '1005'
GROUP BY 공급자번호) Y
WHERE X.공급자번호 = Y.공급자번호
AND X.순번 = Y.순번) C,
(SELECT X.공급자번호, X.위치
FROM 위치 X, (SELECT 공급자번호, MAX(순번) 순번
FROM 위치 WHERE 공급자번호 BETWEEN '1001' AND '1005'
GROUP BY 공급자번호) Y
WHERE X.공급자번호 = Y.공급자번호
AND X.순번 = Y.순번) D
WHERE A.공급자번호 = B.공급자번호
AND A.공급자번호 = C.공급자번호
AND A.공급자번호 = D.공급자번호
AND A.공급자번호 BETWEEN '1001' AND '1005'
가장 최근 값을 반정규화함
4.정규화가 잘 정의된 데이터 모델에서 성능이 저하된 경우
서버B에 연계테이블의 부서명을 위해 서버 A의 부서 테이블과 조인이 필요한경우
→ DB LINK를 통해 조회함으로써 성능상 문제 발생
반정규화
부서명을 서버B의 연계테이블에 반정규화함으로써 불필요하면 DB LINK 조인 방지
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
18 | 제5절_배치_프로그램_튜닝 | 보라빛고양이 | 2012.07.04 | 6913 |
17 | 제3절_DML(DATA_MANIPULATION_LANGUAGE) | balto | 2012.03.09 | 6855 |
16 | 제8절_ORDER_BY_절 | 실천하자 | 2012.03.20 | 6751 |
15 | 제2절_SQL_파싱_부하 | ljw | 2012.04.23 | 6548 |
14 | 제8절_절차형_SQL | 보라빛고양이 | 2012.04.02 | 6544 |
13 | 제2절_인덱스_기본 | 실천하자 | 2012.04.12 | 6501 |
12 | 제1절_고급_SQL_활용 | 실천하자 | 2012.06.11 | 6292 |
11 | 제5절_데이터베이스_구조와_성능 | 오예스 | 2012.03.08 | 6100 |
10 | 제3절_동시성_제어 | 운영자 | 2012.05.08 | 6038 |
9 | 제4절_데이터베이스_IO_원리 | 운영자 | 2012.04.30 | 5968 |
8 | 제3절_데이터베이스_Call과_네트워크_부하 | 오예스 | 2012.04.30 | 5907 |
7 | 제2절_집합_연산자(SET_OPERATOR) | ljw | 2012.03.19 | 5800 |
6 | 문제작성 | 실천하자 | 2012.07.16 | 5796 |
5 | 제4절_파티션_활용 | 오예스 | 2012.06.26 | 5756 |
4 | 제2절_쿼리변환 | ljw | 2012.05.14 | 5615 |
3 | Week1_이주영 | suspace | 2012.07.17 | 5027 |
2 | 제3절_조인_기본_원리 | 보라빛고양이 | 2012.05.31 | 3847 |
1 | Week1_승대수 | 보라빛고양이 | 2012.07.17 | 3054 |