1. 다량의 범위를 자주 처리함으로써 수행 속도 저하가 우려되는 경우 집계 테이블 추가를 고려한다.
2. 자주 사용되는 중복 테이블 유형으로는 집계(통계) 테이블과 진행 테이블이 있다.
3. 클러스터링, 결합인덱스, 고단위SQL 등을 적절하게 활용하면 집계 테이블이 없어도 양호한 수행 속도를 낼 수 있기 때문에 집계테이블 고려시에 반드시 먼저 고려되어야 한다.
4. 검색 조건이 여러 테이블에 걸쳐 다양하게 사용되어 복잡하고 처리량이 많은 경우에는 진행 테이블 추가를 고려한다.
정답) 없음
1. 큰 범위를 자주 처리함으로 써 수행속도의 저하가 우려되는 경우에는 집계 테이블의 추가르 고려해 볼 수 있다.
2. 검색 조건이 여러 테이브에 걸쳐 다양하게 사용되며, 이러한 테이블이 빈번하게 같이 사용된다면 진행 테이블의 추가를 검토하는 것이 바람직하다.
3. 빈번하게 조인을 일으키는 칼럼에 대해서는 중복 칼럼의 생성을 고려한다.
4. 계산된 값은 속성 정의에도 위배되고, 함수 종속이 존재하므로 정규형이 아니다. 하지만, 계산하는데 비용(노력)이 많이 발생하고 빈번하다면 계산 값을 중복시켜 가져갈 수 있다.
정답) 없음
해설)
# 중복 테이블 #
1. 정의
- 많은 정보의 테이블과 데이터를 조회해야할경우 수행속도를 개선하기 위해서 특정 통계 테이블을 두거나, 중복 데이터를 두어 구성하는 것을 말한다.
- 보통 많은 정보의 양을 집계하는 Group by, Sum등과 같은 집계함수를 이용할때 고려대상이 된다.
2. 생성시 고려할 사항
- 정규화에 충실하면 종속성, 활용성은 향상되나 수행속도가 떨어질때 고려
- 많은 범위를 자주 처리해야할 경우 고려
- 특정 범위의 데이터만 자주 처리되는 경우 고려
- 처리 범위를 줄이지 않고는 수행속도를 개선할 수 없을때 고려
- 요약자료만을 주로 요구되는 경우 고려
- 추가된 테이블의 처리를 위한 오버헤드를 고려해서 결정
- 인덱스의 조정, 부분범위 처리 유도, 클러스터링등을 통해서 해결할 수 있을 경우와 비용을 고려한다.
3. 중복 테이블의 유형
A. 집계(통계)테이블
- 단일 테이블의 Group By
- 여러 테이블의 조인 Group Byu
A1. 집계 테이블 생성시 유의사항
- 로우 수와 활용도 분석, 시뮬레이션에 의한 효용성 검토후 결정
- 집계 테이블에 단일 테이블 클러스터링을 한다면 집계 레벨을 좀더 낮춰 활용도를 높일 수 있는지 검토
- 클러스터링, 결합 인덱스, 고단위 SQL을 활용하면 집계테이블 이용없이도 속도를 낼 수 있는지 검토
- 집계 테이블을 다시 집계, 조인하면 추출 할수 있는지 검토하여 집계테이블을 지나치게 많이 만들지 않음
- 기존 집계 테이블 이용 가능 여부 조사후 수정해서 사용할 수 있는지 검토
- 데이터베이스 트리거의 오버헤드에 주의하고, 데이터의 일관성 보장에 유의 (즉, 집계 테이블과 원본 데이터의 일관성 확인)
B. 진행 테이블
- 여러 테이블의 조인이 빈번히 발생하며 처리 범위도 넓은 경우
- M:N 관계가 포함된 처리의 과정을 추적 관리하는경우
- 검색 조건이 여러 테이블에 걸쳐 다양하게 사용되며, 복잡하고 처리량이 많은 경우
B1. 진행 테이블 생서잇 유의사항
- 데이터량이 적절하고 활용도가 좋아지도록 기본키를 선정
- 필요에 따라 적절한 추출 칼럼을 추가하여 집계 테이블의 역할을 하는 다목적 테이블 구상
- 다중 테이블 클러스터링이나 조인 SQL을 적절히 이용하면 집계테이블 없이도 양호한 속도를 낼 수 있는 경우가 많다.
'DAP > 05.데이터모델링' 카테고리의 다른 글
[데이터 모델링] 모델링 기본 원칙 (1) | 2009.12.15 |
---|---|
데이터 모델링 > 주제영역 후보 도출 (0) | 2009.09.26 |
모델관계 표기법 (0) | 2009.09.26 |