2. 데이터 모델과 성능

Quill_Kim_13·2023년 11월 3일
0

sql 공부

목록 보기
4/7

성능 데이터 모델링의 정의

  • 성늘 데이터 모델링이란 데이터 베이스 성능향상을 목적으로 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블통합, 테이블 분할, 조인구조, pk, fk 등 여러 가지 성능과 관련된 사항이 데잍어 모델링에 반영될 수 있도록 하는 것으로 정의할 수 있다

성능 데이터 모델링 고려사항

  • 데이터 모델링을 할 때 정규화를 정확하게 수행한다
  • 데이터베이스 용량 산정을 수행한다
  • 데이터베이스에 발생되는 트랜잭션의 유형을 파악한다
  • 용량과 트랜잭션의 유형에 따라 반 정규화를 수행한다
  • 이력 모델의 조정 , pk/fk 조정, 슈퍼 타입/서브타입 조정 등을 수행한다
  • 성능관점에서 데이터 모델을 검증한다

정규화와 성능

  • 정규화를 수행한다는 것은 데이터를 결정하는 결정자에 의해 함수적 종속을 가지고 있는 일반 속성을 의존자로 하여 입력/수정/삭제 이상현상을 제거하는 것이다
  • 데이터의 중복 속성을 제거하고 결정자에 의해 동일한 의미의 일반 속성이 하나의 테이블로 집약되므로 한 테이블의 데이터 용량이 최소화되는 효과가 있다
  • 정규화된 테이블은 데이터를 처리할 때 속도가 빨라질 수도 있고 느려질 수도 있는 특성이 있다
정규화된 데이터 모델은 조회 시에는 처리 조건에 따라 성능이 향상 혹은 저하 된다
정규화된 데이터 모델은 입력/수정/삭제 시 무조건 성능이 향상이 된다
용어 설명
정규화 함수적 종속성 등과 같은 이론에 근거하여 관계형 데이터베이스 테이블의 삽입,삭제,갱신 이상 현상 발생을 최소화하기 위해 좀 더 작은 단위의 테이블로 설계하는 과정, 즉, 데이터 모델을 정규형에 맞도록 고치는 과정
정규형 정규화 규정 정규화 결과에 의해 도출된 데이터 모델이 갖춰야 할 특성
함수적 종속성 테이블의 특정 컬럼 A의 값을 알면 다른 컬럼 B의 값을 알 수 있을 때 컬럼 B는 컬럼A에 함수적 종속성이 있다고 함(고객명은 고객주민등록번호에 함수적 종속성이 있음)
결정자 함수적 종속성 설명에서, 컬럼 A를 결정자라고 함
다치종속 결정자 컬럼 A에 의해 컬럼 B의 값을 다수 개 알 수 있을 때, 컬럼 B는 컬럼 A에 다치 종속 되었다고 함(학번을 알면 해당 학생의 다수 개 수강과목을 알 수 있을 때, 수강과목은 학번에 다치 종속 관계임)

정규화 효과 및 장점

  • 상호 종속성이 강한 데이터 요소들을 분리, 독립된 개념(엔티티, 테이블)으로 정의하게
    됨에 따라 High Cohesion & Loose Coupling 원칙에 충실해지며 이로 인해 유연성이
    극대화 됨
  • 개념이 좀 더 세분화됨에 따라 해당 개념에 대한 재활용 가능성이 높아짐(일반적으로
    각종 참조 모델은 정규형을 만족하고 있음)
  • Non-key 데이터 요소가 한번 만 표현됨에 따라 중복이 최소화 됨(데이터 품질확보,
    저장공간 절약, DML 성능

정규화 이론

정규형 특징
제 1 정규형

  • 모든 속성은 원자 값을 가져야 함
  • 다중 값을 가질 수 있는 속성은 분리되어야 함

제 2 정규형

  • 제 1 정규형을 만족하고 모든 Non-key 컬럼은 기본 키 전체에 종속되어야 함
  • 기본 키에 종속적이지 않거나 기본 키 일부 컬럼(들)에만 종속적인 컬럼은 분리되어야 함

제 3 정규형

  • 제 2 정규형을 만족하고 일반속성들간에도 종속관계가 존재하지 않아야함
  • 일반속성들 간 종속관계가 존재하는 것들은 분리되어야 함

정규화와 성능

  • 정규화를 수행해서 조인이 발생하게 되더라도 효율적인 인덱스 사용을 통해 조인 연산을
    수행하면 성능 상 단점은 거의 없다.
  • 정규화를 수행하여 소량의 테이블이 생성된다면 소량의 테이블을 먼저 읽어 조인 연산을
    수행하면 되므로 성능 상 유리할 수 있다.
  • 정규화가 제대로 되지 않으면 동일한 종류의 속성을 여러 개 가지고 있어서 과다한
    인덱스가 만들어 질 수 있는데 정규화를 한다면 하나의 인덱스만 만들어도 된다.

반정규화의 정의

  • 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발(Development)과
    운영(Maintenance)의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의
    기법을 의미
  • 협의의 반정규화는 데이터를 중복하여 성능을 향상시키기 위한 기법이라고 정의할 수
    있고 좀 더 넓은 의미의 반정규화는 성능을 향상시키기 위해 정규화된 데이터 모델에서
    중복, 통합, 분리 등을 수행하는 모든 과정을 의미
  • 데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는
    이유는 데이터를 조회할 때 디스크 I/O 량이 많아서 성능이 저하되거나 경로가 너무 멀어
    조인으로 인한 성능저하가 예상되거나 칼럼을 계산하여 읽을 때 성능이 저하될 것이
    예상되는 경우 반정규화를 수행하게 된다.

반정규화의 기법 – 테이블 정규화

기법 분류 기법 내용
테이블 병합 1:1 관계 테이블 병합 1:1 관계를 통합하여 성능향상
1:M 관계 테이블 병합 1:M 관계를 통합하여 성능 향상
슈퍼/서브타입 테이블 병합 슈퍼/서브 관계를 통합하여 성능 향상
테이블 분할 수직 분할 컬럼 단위의 테이블을 디스크 I/O 분산처리를 하기 위해 테이블을 1:1 로 분리하여 성능향상
수평분할 로우 단위로 집중 발생되는 트랜잭션을 분석하여 디스크 I/O 및 데이터 접근 효율을 높여 성능 향상
테이블 추가 중복 테이블 추가 다른 업무이거나, 서버거 다른 경우 테이블 구조를 중복하여 원격조인을 제거하여 성능을 향상
통계테이블 추가 SUM, AVG 등을 미리 수행하여 계산해둠으로써 조회 시 성능을 향상
이력테이블 추가 이력 테이블 중에서 마스터 테이블에 존재하는 레코드를 중복하여 이력테이블에 존재하는 방법은 반정규화 유형
부분 테이블 추가 하나의 테이블의 전체 칼럼 중 자주 이용하는데 자주 이용하는 집중화된 칼럼들이 있을 때 디스크 I/O 를 줄이기 위해 해당 칼럼들을 모아놓은 별도의 반정규화된 테이블을 생성

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

  • 대량의 데이터가 존재하는 테이블에 많은 트랜잭션이 발생하여 성능이 저하되는 테이블 구조에 대해 수평/수직 분할 설계를 통해 성능 저하를 예방할 수 있음
  • 테이블의 데이터는 Block 단위로 디스크에 저장된다.
    ◼ 칼럼이 많아지게 되면 하나의 로우를 저장 시 물리적인 디스크에 여러 블록에 데이터가 저장될 가능성이 높아짐
    ◼ 즉 하나의 행을 읽더라도 여러 개의 블록을 읽어야함
    ◼ 자연스레 해당 SQL 문의 Block I/O 가 많아짐
  • 대용량 테이블에서 발생할 수 있는 현상

로우체이닝

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

로우 마이그레이션

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

로우체이닝과 로우마이그레이션이 발생하여 많은 블록에 데이터가 저장되면 데이터 조회 시 절대적인 Block I/O 의 횟수가 많아지게 된다.

  • Block I/O 의 횟수가 많아지면 Disk I/O 를 할 가능성도 높아진다.
  • Disk I/O 를 하게 되는 경우 성능이 급격히 저하 된다

대용량 테이블 성능 향상 방안

  • 수직분할
  • 수평분할
    ◼ HASH PARTITION 적용
    ◼ HASH PARTITION 은 지정된 HASH 조건에 따라 해싱 알고리즘이 적용되어 테이블이
    분리됨
    ◼ 설계자는 테이블에 데이터가 정확하게 어떻게 들어갔는지 알 수 없음
    ◼ 성능향상을 위해 사용하며 데이터 보관 주기에 따ㅍ쉽게 삭제하는 기능은 제공될 수
    없다.
  • 수평/수직분할의 절차
    ◼ 데이터 모델링을 완성한다.
    ◼ 데이터베이스 용량 산정을 한다.
    ◼ 대량 데이터가 처리되는 테이블에 대해서 트랜잭션 처리 패턴을 분석한다.
    ◼ 칼럼 단위로 집중화된 처리가 발생하는지, 로우 단위로 집중화된 처리가 발생되는지
    분석하여 집중화된 단위로 테이블을 분리하는 것을 검토한다.

데이터 베이스의 구조와 성능

슈퍼 타입 / 서브타입 모델

  • 업무를 구성하는 데이터의 특징을 분석하여 공통점/차이점을 고려하여 효과적으로
    표현할 수 있음
  • 공통의 부분을 슈퍼타입으로 모델링하고 공통으로 부터 상속받아 다른 엔터티와 차이가
    있는 속성에 대해서는 별도의 서브엔터티로 구분
  • 업무의 모습을 정확하게 표현하면서 물리적인 데이터 모델로 변환을 할 때
    선택의 폭을 넓힐 수 있는 장점이 있음

슈퍼 타입 / 서브타입 모델의 변환의 중요성

  • 트랜잭션은 항상 일괄로 처리하는데 테이블은 개별로 유지되어 Union 연산에 의해 성능이 저하될 수 있다.
  • 트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합되어 있어 불필요하게 많은 양의 데이터가 집약되어 있어 성능이 저하되는 경우가 있다.
  • 트랜잭션은 항상 슈퍼+서브 타입을 공통으로 처리하는데 개별로 유지되어 있거나 하나의 테이블로 집약되어 있어 성능이 저하되는 경우가 있다.

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

  • 개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성
    ◼ 슈퍼타입과 서브타입 각각에 대해 독립적으로 트랜잭션이 발생이 되면 슈퍼타입에도 꼭 필요한 속성만을 가지게 하고 서브타입에도 꼭 필요한 속성 및 자신이 타입에 맞는 데이터만 가지게 하기 위해서 모두 분리하여 1:1 관계를 갖도록 한다.
  • 전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성
    ◼ 테이블을 개별로 분리하면 불필요한 조인을 유발하거나 불필요한 UNION ALL 과 같은 SQL 구문이 작성되어 성능이 저하

PK / FK 칼럼 순서와 성능

  • PK / FK 칼럼 순서와 성능 개요
    ◼ 테이블에 발생되는 트랜잭션 조회 패턴에 따라 PK/FK 칼럼의 순서를 조정해야 함
    ◼ 성능저하 현상이 많은 부분이 PK 가 여러 개의 속성으로 구성된 복합식별자 일 때
    PK 순서에 대해 별로 고려하지 않고 데이터 모델링을 한 경우에 해당
    ◼ 물리적인 데이터 모델링 단계에서는 스스로 생성된 PK 순서 이외에 다른
    엔터티로부터 상속받아 발생되는 PK 순서까지 항상 주의하여 표시

  • PK 가 복합키일 경우 칼럼 순서가 성능에 영향을 미치는 이유
    ◼ 인덱스 선두 칼럼에 대한 조건이 들어와야 한다. (가능한한 ‘=‘ 조건으로)
    ◼ 인덱스 선두 칼럼에 대한 조건이 들어오지 않을 경우 인덱스 전체를 읽거나 테이블
    전체를 읽게 됨

  • PK 순서의 중요성
    ◼ 데이터 모델 관계에 의해 상속받은 FK 속성들은 SQL WHERE 절에서 조인으로
    이용되는 경우가 많으므로, FK 인덱스를 생성해야 성능이 좋음
    ◼ FULL TABLE SCAN 이 발생하지 않도록 순서 구성

분산 데이터베이스와 성능

분산 데이터베이스의 개요

  • 여러 곳으로 분산되어 있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록
    한 데이터베이스
  • 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어
    있는 데이터들의 모임. 물리적 Site 분산, 논리적으로 사용자 통합·공유

분산 데이터베이스의 투명성

  • 분할 투명성 ( 단편화 )
  • 위치 투명성
  • 지역 사상 투명성
  • 중복 투명성
  • 장애 투명성
  • 병행 투명성

분산 데이터 베이스의 장 단점

장점

  • 지역자치성, 점증적 시스템 용량 확장
  • 신뢰성과 가용성
  • 효용성과 융통성
  • 빠른 응답 속도와 통신비용 절감
  • 데이터의 가용성과 신뢰성 증가
  • 시스템 규모의 적절한 조절
  • 각 지역 사용자의 요구 수용 증대

단점

  • 소프트웨어 개발 비용
  • 오류의 잠재성 증대
  • 처리 비용의 증대
  • 설계, 관리의 복잡성과 비용
  • 불규칙한 응답 속도
  • 통제의 어려움
  • 데이터 무결성에 대한 위협

분산 데이터베이스의 적용기법

  • 테이블 위치 분산
  • 테이블 분할 분산
  • 테이블 복제 분산
  • 테이블 요약 분산
profile
미친개발자를향해

0개의 댓글

관련 채용 정보