자격증/SQLD [SQLD 개념 - 1과목 Part2. 데이터모델과 성능] 3) 반정규화와 성능 - 728x90 3) 반정규화와 성능 1. 반정규화를 통한 성능향상 전략 반정규화의 정의 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상&개발&운영의 단순화를 위해 협의 : 데이터를 중복하여 성능을 향상시키기 위한 기법 광의 : 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정 정규화를 거치면 입력/수정/삭제 뿐만 아니라 조회에 대한 성능도 향상된다. 하지만 엔터티의 개수와 관계가 증가하기 때문에 여러 조인을 통해 데이터를 가져오는 경우가 발생한다. 이에 대한 해법으로 반정규화를 진행한다. 설계단계에서 반정규화를 적용하기 위해 함수적 종속관계는 위반하지 않는 선에서 데이터 중복을 허가 반정규화의 적용방법 칼럼 중복을 통한 반정규화 다른테이블에 조인하여 가져와야할 칼럼을, 기준이 되는 테이블에 중복하여 SQL문장을 단순하게 처리하는 것 반정규화 진행에 앞서 칼럼의 반정규화 뿐만 아니라, 테이블의 반정규화와 관계의 반정규화 등 종합적인 검토가 필요 반정규화 절차 반정규화 대상 조사 범위처리빈도수 조사 : 자주 사용되는 테이블에 접근하는 프로세스의 수가 많고 항상 일정한 범위만을 조회하는 경우 반정규화를 검토 대량의 범위 처리 조사 : 대량의 데이터를 포함한 테이블을 자주 처리하는 경우에 반정규화를 검토 통계성 프로세스 조사 : 통계 정보를 필요로할 때 별도의 통계테이블(반정규화 테이블)을 생성하여 사용 테이블 조인 개수 : 테이블에 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려운 경우 반정규화를 검토 다른 방법유도 검토 가급적이면 반정규화(데이터 무결성을 깨뜨리는 위험이 있기 때문에)가 아닌 다른 방법을 활용 조인이 많이 걸린 테이블에 조회를 작업하는 경우 뷰(VIEW)를 사용하면 성능 향상을 이끌 수 있다 응용 애플리케이션에서 로직을 개선한다 반정규화 적용 반정규화 대성 : 테이블, 속성, 관계에 대해 반정규화를 적용할 수 있다 대상에 대해 중복 또는 분할의 추가 작업 수행을 통해 반정규하를 진행한다 2. 반정규화의 기법 테이블 반정규화 테이블 병합 1:1 관계를 통합한 테이블을 통해 성능 향상 1:M 관계를 통합한 테이블로 성능 향상 슈퍼/서브 관계를 통합한 테이블로 성능 향상 테이블 분할 수직 분할 : 칼럼 단위의 테이블을 1:1로 분리하여 성능 향상(먼저 트랜잭션 처리 유형을 파악해야 함) 수평 분할 : raw 단위로 집중되는 트랜잭션을 분석하여 raw단위로 테이블을 분리하여 데이터 접근 효율성을 높임 테이블 추가 중복테이블 추가 : 업무 또는 서버가 다른경우, 동일한 테이블 구조를 중복하여 원격조인을 제거함으로써 성능 향상 통계테이블 추가 : SUM, AVG 등 미리 계산 결과를 저장한 테이블을 추가하야 조회 시 성능 향상 이력테이블 추가 : 마스터테이블에 존재하는 레코드를 중복하여 이력테이블에 저장하는 방법 이력 데이터에 관련한 정보 확인 부분테이블 추가 : 테이블 안에 집중적으로 자주 이용되는 칼럼들을 모아놓은 별도의 반정규화 된 테이블을 생성하여 성능 향상 칼럼 반 정규화 중복칼럼 추가 : 조인을 수행하면서 성능이 저하되는 것을 예방하기 위해 조인이 칼럼을 추가 파생칼럼 추가 : 미리 계산을 수행하고 값을 칼럼에 보관하여 트랜잭션이 처리되는 시점에 사용 이력테이블 칼럼 추가 : 이력테이블에 가능성 칼럼(최근값 여부, 시작과 종료 일자 등)을 추가하여 이력데이터 처리시 성능 향상 PK에 의한 칼럼 추가 : 단일 PK안에서 특정값을 별도로 조회하는 경우 성능 저하가 발생, PK안에 일반 속성을 포함시켜 성능 향상 응용시스템 오작동을 위한 칼럼 추가 : 데이터 처리 이전 데이터를 임시적으로 중복하여 보관하는 기법 관계 반 정규화 중복관계 추가 : 데이터를 처리하기 위한 조인으로 발생하는 성능저하를 예방하기 위해 추가적인 관계를 맺는 방법 관계의 반정규화는 데이터 무결성을 깨뜨리지 않고 데이터 처리 성능을 향상 시킬 수 있다(테이블과 칼럼에 대한 반정규화는 데이터 중복에 따른 문제가 발생할 수 있음) 출처 : https://blog.naver.com/handuelly/221709570862 SQLD, 1-2-3 반정규화와 성능 1. 반정규화를 통한 성능향상 전략가. 반정규화의 정의 - 반정규화 : 정규화된 엔터티, 속성, 관계에 대해 ... blog.naver.com 728x90 300x250 공유하기 게시글 관리 구독하기WONILLISM's Blog 저작자표시 Contents 당신이 좋아할만한 콘텐츠 [SQLD 개념 - 1과목 Part2. 데이터모델과 성능] 5) 데이터베이스 구조와 성능 2020.05.22 [SQLD 개념 - 1과목 Part2. 데이터모델과 성능] 4) 대량 데이터에 따른 성능 2020.05.22 [SQLD 개념 - 1과목 Part2. 데이터모델과 성능] 2) 정규화와 성능 2020.05.21 [SQLD 개념 - 1과목 Part2. 데이터모델과 성능] 1) 성능데이터 모델링의 개요 2020.05.21 댓글 0 + 이전 댓글 더보기