자격증

SQLD 제2장 데이터모델과 성능

중대경 2021. 11. 17. 18:02

제2장. 데이터 모델과 성능

 

성능데이터모델링의 정의

우선은 데이터베이스 성능향상 목적에 의의 설계단계의 데이터 모델링의 시초임.

문제발생의 SQL중심으로 확인하는 것이 아닌 성능이 저하된곳에 프로젝트 초기에 운영환경에 대비한 테스트 환경을 구축, 트랜잭션을 발생시켜

실제 성능을 테스트해보는 것이 중요함.

 

성능을 고려한 데이터 모델링의 순서

1.데이터 모델링을 할 때 정규화를 정확하게 수행한다.

2.데이터베이스 용량산정을 수행한다.

3.데이터베이스에 발생되는 트랜잭션의 유형을 파악한다.

4.용량과 트랜잭션의 유형에 따라 반정규화를 수행한다.

5.이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정 등을 수행한다.

6.성능관점에서 데이터 모델을 검증한다.

 

 

1차 정규화 : 반복되는 속성이나 그룹의 속성을 제거하고, 새로운 테이블을 추가한 후에 기존 테이블과 일대다 관계를 형성하는 것

2차 정규화 : 기본키가 복합키로 구성되었을 때, 복합키 전체에 의존하지 않고 일부에 의존적인 열이 있으면 이를 제거하는 것

3차 정규화 : 기본키에 의존하지 않고 일반 열에 의존하는 열이 있다면 이를 제거해야 하는 것

 

1차 정규화의 조건

칼럼에 의한 반복적인 속성값을 갖는 형태는 속성의 원자성을 위배한 제1차 정규화의 대상이 된다.

1차 정규화 : 반복되는 속성이나 그룹의 속성을 제거하고, 새로운 테이블을 추가한 후에 기존 테이블과 일대다 관계를 형성하는 것

컬럼단위에서의 중복된 경우도 1차 정규화의 대상

 

참고

대량의 데이터는 PK의 성격에 따라 부분적인 테이블로 분리할 수 있다. (파티셔닝 기법)

하나의 결과셋을 추출하기 위해 다량의 데이터를 탐색하는 처리가 반복적으로 발생한다면 반정규화를 고려해야함

관계반정규화

중복관계 추가 : 데이터를 처리하기 위한 여러 경로를 거쳐 조인이 가능하지만 이 때 발생할 수 있는 성능 저하를 예방하기 위해 추가적인 관계를 맺는 방법

 

칼럼에 대한 반정규화 기법

중복칼럼을 추가 - 조인감소를 위해 여러 테이블에 동일한 칼럼을 갖도록한다

파생칼럼을 추가 - 조회성능 우수하게 하기 위해 미리 계산된 칼럼을 갖도록 한다

이력테이블에 기능 칼럼추가 

 

반정규화 절차

범위처리빈도수 조사, 대량의 범위 처리조사, 통계성 프로세스 조사, 테이블 조인 개수

 

로우체이닝,로우마이그레이션

로우 체이닝 : 로우의 길이가 너무 길어서 데이터 블 록 하나에 데이터가 모두 저장되지 않고 두 개 이상 의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태.

로우 마이그레이션 : 데이터블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못 하고 다른 블록의 빈 공간을 찾아 저장하는 방식

 

 

 

파티셔닝?

하나의 테이블에 많은 양의 데이터가 저장되면 인덱스를 추가하고 테이블을 몇개로도 쪼개도 성능이 저하되는 경우가있다

이때 물리적으로 여러개의 테이블로 분리하여 데이터 액세스 성능도 향상시키고, 데이터관리방법도 개선할수있도록 테이블에 적용하는 기법을 말한다

 

UNION/UNION ALL기법은 개별조회에 따른 시간요소와 조합성능이 저하

따라서 하나의 테이블로 통합 후 PK체계나 일반속성을 사용해 구분자로 이용하도록함.

 

슈퍼/서브 타입 데이터

-개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성

-슈퍼타입+서브타입에 발생되는 트랜잭션에 대해서는 슈퍼타입+서브타입으로 구성

-전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성

 

인덱스 특성을 고려한 PK/FK DB 성능향상

속성의 값 가급적 ‘=‘, ‘BETWEEN’, ‘<>’ 

 

분산데이터베이스 정의?

데이터베이스를 연결하는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러 지역 여러 노드로 위치시켜 사용성/성능 등을 극대화 시킨 데이터베이스