본문 바로가기
SQLD

SQLD | 데이터 모델과 성능

by 개발송이 2022. 2. 21.

제 2장 데이터 모델과 성능

 

제 1절 성능 데이터 모델링의 개요

 

성능 데이터모델링

: 데이터베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터모델링에 반영될 수 있도록 하는 것이다.

 

성능 데이터모델링 특징

분석/설계 단계에서 데이터베이스 처리 성능을 향상시킬 수 있는 방법을 고려해야 함

데이터모델은 성능을 튜닝하면서 변경 될 수 있다.

 

성능 데이터 모델링 수행 절차

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

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

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

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

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

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

 

 

제 2절 정규화와 성능

 

정규화

-데이터베이스의 테이블이 잘 만들어졌는지 평가하고, 잘 만들지 못한 테이블을 고쳐나가는 과정

-테이블을 정규화라고 불리는 형태에 부합하게 만들어감

-데이터베이스에서 삽입, 업데이트, 삭제 이상을 없앨 수 있음

-새로운 종류의 데이터를 추가할 때 테이블 구조 수정을 많이 하지 않아도 된다. 

 

정규화 단계(원부이)

1정규화 : 원자성. 모든 속성은 반드시 하나의 값만 가져야 한다.

2정규화 : 부분 종속. 모든 속성은 반드시 모든 기본키에 종속되어야 한다.

3정규화 : 이행 종속. 기본키가 아닌 모든 속성간에는 서로 종속될 수 없다.

 

 

제 3절 반정규화와 성능

 

반정규화

: 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위헤 중복, 통합, 분리 등을 수행

데이터를 중복하여 성능을 향상시키기 위한 기법

 

데이터를 조회할 때 디스크 I/O량이 많아서 성능저하가 예쌍되거나 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 수행함

 

반정규화 기법

가. 테이블 반정규화 : 테이블 병합/ 테이블 분할 / 테이블 추가

나. 칼럼 반정규화 : 중복칼럼 추가 / 파생칼럼 추가 / 이력테이블칼럼 추가 / PK에 의한 칼럼 추가 / 응용시스템 오작동을 위한 칼럼 추가

다. 관계 반정규화 : 중복관계추가

 

제 4절 대량데이터에 따른 성능

 

대량데이터 발생에 따른 테이블 분할 개요

-로우 체이닝 : 로우길이가 너무 길어 데이터블록 하나에 데이터가 모두 저장되지 않고 두개 이상 저장

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

 

반정규화의 대상에 대해 다른 방법으로 처리

-지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려울 경우 뷰를 사용하여 이를 해결할 수도 있다.

-대량의 데이터처리나 부분처리에 의해 성능이 저하되는 경우에 클러스터링을 적용하거나 인덱스를 조정함으로써 성능을 향상시킬 수 있다.

-대량의 데이터는 PK의 성격에 따라 부분적인 테이블로 분리할 수 있다. 즉 파티셔닝 기법이 적용되어 성능저하를 방지할 수 있다.

-응용 애플리케이션에서 로직을 구사하는 방법을 변경함으로써 성능을 향상시킬 수 있다.

 

파티셔닝 기법 : 하나의 테이블에 많은 양의 데이터가 저장될 때 데이터를 쪼개도 성능이 저하될 대. 이때 논리적으로는 하나의 테이블이지만 물리적으로는 여러 개의 테이블로 분리하여 데이터 액세스 성능도 향상시키고, 데이터 관리방법도 개선할 수 있도록 테이블에 적용하는 기법

 

 

제 5절 데이터베이스 구조와 성능

 

슈퍼/ 서브 타입 데이터 모델의 변환 기술

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

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

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

 

트랜잭션 : 데이터베이스의 상태를 변경하는 논리적 작업 단위

하나의 트랜잭션은 반드시 commit/rollback이 됩니다. ACID

 

제 6절 분산데이터베이스와 성능

 

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

 

장점 

-지역 자치성, 점증적 시스템 용량 확장

-신뢰성과 가용성

-효율성과 융통성

-빠른 응답 속도와 통신비용 절감

-데이터의 가용성과 신뢰성 증가

-시스템 규모의 적절한 조절

-각 지역 사용자의 요구 수용 증대

 

<->GSI : 통합된 한 개의 인스턴스. 즉 통합 데이터베이스 구조를 의미