새소식

Computer science - 2022.05.25

[SQLD] 데이터 모델과 성능 파트 내용 정리

  • -

SQL 자격검정 실전문제집(노랭이)를 풀면서 정리한 내용입니다.

성능 데이터 모델링

분석 및 설계 단계부터 성능관련한 데이터 모델링을 수행하는 것

  • 정규화, 반정규화
  • 테이블 분할, 테이블 병합, 테이블 추가
  • 컬럼 추가, PK/FK 조정
  • 슈퍼/서브 타입 조정

성능 데이터 모델링 특징

  • 데이터증가량클수록 성능 저하에 따른 성능 개선 비용이 증가
    • 데이터의 크기가 문제가 되어 테이블 분할을 하게 되는 경우 이로 인해 할 일이 많아지기 때문
  • 데이터 모델성능을 튜닝 하면서 변경될 수 있음
    • 테이블 분할, 병합, 추가로 인해 데이터 모델 구조 변경 가능
  • 데이터 모델링을 수행할 경우 성능 저하에 따른 Rework 비용을 최소화 가능(미리 고민하고 처리했으니까)

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

  1. 데이터 모델링을 할 때 정규화를 정확하게 수행
  2. 데이터 베이스 용량 산정을 수행한다.
  3. 데이터 베이스에 발생되는 트랜잭션의 유형을 파악한다.
  4. 용량트랜잭션의 유형에 따라 반정규화를 수행한다.
  5. 이력 모델의 조정, PK/FK 조정, 슈퍼/서브 타입 조정들을 수행한다.
    • 변경 이력 중 최근 값에 대한 조회가 빈번할 경우 ‘최신 여부’를 확인 가능한 컬럼 추가
  6. 성능 관점에서 데이터 모델을 검증한다.

N차 정규화

어떤 기준 값에 의해 종속되는 현상함수적 종속성근거로 실행

이때, 기준 값결정자(Determinant)라 하고 종속되는 종속자(Dependent)라고 한다.

  • 1차 정규화

같은 속성이 일반 속성 안에서 컬럼 단위로 반복(속성의 원자성 위배)되는 경우 수행

  • 완전 함수 종속성 만족
    • 종속자가 기본 키에만 종속
  • 1 : M 관계분리

https://www.youtube.com/c/전광철OCP

  • 2차 정규화

기본 키에 대한 부분 집합으로 존재하는 속성들을 따로 분리해 내어 엔터티를 구성

  • 부분 함수 종속성을 제거

https://www.youtube.com/c/전광철OCP
https://www.youtube.com/c/전광철OCP

  • 3차 정규화
  • 이행 함수 종속성을 제거(X → Y → Z 관계 제거)

1차 정규화와 인덱스

 

WHERE : 인덱스 사용, OR : 인덱스 미 사용인 상황에서 Full Table Scan을 진행하고 싶을 때

문제점

각 유형 분류 코드 칼럼에 대해 모두 인덱스가 있을 때 인덱스를 사용해 검색 가능. 하지만 인덱스개수아져 입력, 수정, 삭제 등과 같은 작업이 오히려 느려질 수 있음

해결 방안

따라서 1차 정규화 후 유형 기능 분류 속성을 하나로 통합 후 인덱스 적용해야 좋음

정규형

N차 정규화 규칙위반하지 않는 정규형

  • 1차 정규화 조건을 어기지 않으면 1차 정규형

반정규화

정규화된 엔터티, 속성, 관계에 대해 시스템성능 향상/개발/운영 단순화 위해 중복, 통합, 분리를 수행하는 데이터 모델링 기법

  • 데이터를 중복하여 성능을 향상 시킴

성능향상 시키기 위해 정규화 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정

  • 데이터 무결성이 깨질 수 있는 위험이 있음.

반정규화 판단 요소

  • 재현의 적시성(빠르게 처리)
  • 조회 시 I/O량이 많아 성능이 저하가 있는 경우
  • 경로가 너무 멀어 조인으로 인한 성능 저하예상되는 경우
  • 컬럼을 읽을 때 성능저하될 것이 예상되는 경우

반정규화 절차

  1. 반정규화 대상 조사
    • 범위 처리 빈도수 조사
    • 대량의 범위 처리 조사
    • 통계성 프로세스 조사
    • 테이블 조인 개수
  2. 다른 방법 검토
    • 뷰 테이블
      • 지나치게 많은 조인으로 데이터를 조회하는 작업이 어려울 경우 고려
    • 클러스터링 적용
      • 대량의 데이터 처리부분 처리에 의해 성능이 저하되는 경우
    • 인덱스 조정
      • 대량데이터 처리나 부분 처리에 의해 성능이 저하되는 경우
    • 파티셔닝 기법
      • PK성격에 따라 부분 테이블로 분리
    • 응용 어플리케이션
      • 로직 구사하는 방법을 변경
  3. 반정규화 적용
    • 테이블 반정규화
    • 속성(컬럼)의 반정규화
    • 관계의 반정규화

반정규화 기법

  1. 테이블 분할
  2. 테이블 병합
  3. 테이블 추가(중복, 통계, 이력, 부분 테이블)
    1. 중복 테이블 : 원격지와의 조인을 줄이기 위해서 같은 구조의 테이블 추가
    2. 부분 테이블 : 자주 사용되는 집중된 컬럼별도로 모아 놓은 테이블 생성
  4. 컬럼 추가(중복, 파생, 기능 컬럼)
  5. PK, FK 조정
  6. 슈퍼/서브 타입 조정

테이블/컬럼의 반정규화

  1. 테이블
  • 테이블 병합
    • 1:1/1:M 관계 테이블 병합
    • 슈퍼/서브 타입 테이블 병합
  • 테이블 분할(파티셔닝)
    • 수직/수평 분할
    • 디스크 I/O 분산*, 데이터 접근 효율성 증가

https://www.youtube.com/c/전광철OCP

  • 수직 분할(컬럼 단위, 1 : 1 관계)
  • 수평 분할(로우 단위, 관계 X)
  • 테이블 추가
    • 중복, 통계, 이력, 부분 테이블 추가
  1. 컬럼
  • 중복 컬럼 추가
    • 조인 감소를 위해 여러 테이블에 동일 컬럼을 갖도록 함
  • 파생 컬럼 추가
    • 조회 성능우수하게 하기 위해 미리 계산된 컬럼을 갖도록 함
  • 이력 테이블컬럼 추가
    • 최신 값처리하는 이력의 특성을 고려 기능성 컬럼추가
  • PK에 의한 컬럼 추가
    • FK
  • 응용 시스템 오작동 방지를 위한 컬럼 추가

로우 체이닝(Row Chaining)

새로운 데이터입력될 때 빈 공간이 있는 블록에 입력되고 그 공간이 부족할 때 새로운 블록에 나머지 데이터를 입력하는 것을 로우 체이닝 이라고 함

  • 로우 길이가 너무 길어(컬럼 수가 너무 많음)서 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 한 로우가 저장되는 현상
  • 테이블에 많은 컬럼이 존재할 경우 디스크 I/O 증가조회 성능 저하가 발생할 수 있음 자주 사용되는 컬럼/아닌 컬럼분류해서 수직 분할을 하여 디스크 I/O를 분산 시켜 해결

로우 마이그레이션(Row Migration)

변경 작업을 위해 공간이 더 필요한데 저장 공간이 없을 경우 새로운 블록으로 이동 시켜 변경 작업을 수행하는 것을 로우 마이그레이션이라 함

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

윈도우 함수

  • RDBMS에서 이전 또는 이후 위치레코드에 대한 접근이 가능

https://www.youtube.com/c/전광철OCP


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

  • 개별로 발생되는 트랜잭션개별 테이블로 구성
    • 서브타입을 개별 테이블로 구성 : Roll-Down
  • 슈퍼 타입 + 서브 타입에 대해 발생되는 트랜잭션은 슈퍼타입 + 서브 타입 테이블로 구성
  • 전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성
    • 전체를 하나의 테이블로 구성 : Roll-Up

슈퍼 타입으로 서브 타입을 통합(IDENTITY) 하여 테이블 구성 : Roll - Up

https://www.youtube.com/c/전광철OCP

서브 타입을 개별 테이블로 구성 : Roll - Down

https://www.youtube.com/c/전광철OCP

슈퍼 타입 - 서브 타입각각 구분해서 테이블을 구성하는 구조

  • 슈퍼 타입 : 공통 정보 저장
  • 서브 타입 : 개별 정보 저장

인덱스

PK 순서를 결정하는 기준이 됨

  • 인덱스효율적으로 이용할 수 있는 순서로 진행

인덱스의 특징

  • 값의 범위에 따라 일정하게 정렬
  • 상수 값 조회 컬럼 후 범위 조회 컬럼이 그 다음에 오도록 인덱스를 설정하면 엑세스 범위를 좁힐 수 있
  • 상속 받은 테이블에 대해서도 인덱스가 필요

분산 데이터 베이스

장점

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

단점

  • 소프트웨어 개발 비용 증가
  • 잠재적 오류의 증가
  • 처리 비용의 증가
  • 설계, 관리의 복잡비용 증가
  • 불규칙한 응답 속도
  • 어려운 통제
  • 데이터 무결성에 대한 위협
    • 무결성? DB에 저장된 값과 그것이 표현하는 현실 세계실제 값일치하는 지

분산 데이터 베이스 도입 고려

  • 실시간 동기화요구되지 않을 때
  • 거의 실시간의 업무적인 특징을 가지고 있을 때
  • 특정 서버에 부하가 집중돼 이를 분산 시키려 할 때
  • 백업 site를 구성하려고 할 때

분산 데이터 베이스 효율성 증대

  • 테이블 복제 분산 적용
    • 공통 코드, 기준 정보, 마스터 데이터 등을 복제 분산하여 구성

ETC

GSI

글로벌 통합 단일 시스템 구성

  • 표준화 데이터, 프로세스를 근간으로 통합된 단일 시스템 구성
  • Ex) SAP ERP 도입
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.