SQL

[sqld] SQL 자격검정 실전문제 핵심정리 (2장 데이터 모델과 성능) (6.10 시험 대비용 정리)

SeungbeomKim 2023. 6. 6. 21:19

참고자료 : SQL 자격검정 실전문제 도서

제2장 데이터 모델과 성능

  • 제1절 성능 데이터 모델링의 개요
  • 제2절 정규화와 성능
  • 제3절 반정규화와 성능
  • 제4절 대량 데이터에 따른 성능
  • 제5절 데이터베이스 구조와 성능
  • 제6절 분산 데이터베이스와 성능

 

성능데이터모델링이란 ?

  • 데이터베이스 성능 향상을 목적으로 설계단계의 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것 
  • 데이터의 증가가 빠를수록 성능저하에 따른 성능개선비용 증가
  • 데이터모델은 성능을 튜닝하면서 변경이 될 수 있음
  • 분석/설계 단계에서 성능을 고려한 데이터모델링을 수행할 경우 성능 저하에 따른 Rework비용을 최소화할 수 있는 기회를 가지게 됨

 

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

  1. 데이터모델링을 할 때 정규화를 정확하게 수행
  2. 데이터베이스 용량 산정
  3. 데이터베이스의 발생되는 트랜잭션의 유형 파악
  4. 용량과 트랜잭션 유형에 따라 반정규화 수행
  5. 이력모델의 조정, PK/FK 조정, 슈퍼타입/서브타입 조정
  6. 성능 관점에서 데이터 모델 검증

 

(-) 정규화

  • 반복적인 데이터를 분리하고 각 데이터가 종속된 테이블에 적절하게 배치되도록 하는 것
    • 1차 정규화 : 같은 성격, 내용 컬럼이 연속될 때 컬럼 제거, 테이블 생성
    • 2차 정규화 : PK 복합키 구성일 때 부분적 함수 종속 관계 테이블 분리
    • 3차 정규화 : PK가 아닌 일반컬럼에 의존하는 컬럼 분리

(+) 반정규화

  • 정규화된 엔티티, 관계, 속성에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법
  • 조회 시 디스크 I/O가 많거나 경로가 멀어 조인에 의한 성능 저하를 막기 위해 수행 (테이블 추가 -> 부분 테이블추가)

정규화 시 입력/삭제/수정 성능이 향상, 반정규화시 조인 성능 향상

 

칼럼의 반정규화

  1. 중복칼럼 추가 - 조인감소를 위해 여러 테이블에 동일한 칼럼을 갖도록 함
  2. 파생칼럼 추가 - 조회 성능을 우수하게 하기 위해 미리 계산된 칼럼을 갖도록 함
  3. PK에 대한 속성 추가 - PK관계에 해당하는 속성을 추가하여 조인성능을 높임
  4. 이력테이블에 기능 칼럼 추가 - 최산값을 처리하는 이력의 특성을 고려하여 기능성 칼럼 추가

 

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

  1. 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 어려운 경우 : 뷰(View) 사용
  2. 대량의 데이터처리나 부분처리에 의해 성능이 저하되는 경우 : 인덱스 조정 및 클러스터링 적용
  3. 하나의 테이블에 많은 데이터가 저장되었는데, 인덱스를 추가하고 테이블을 쪼개도 성능이 저하되는 경우 : 파티셔닝 적용(논리적으로는 하나의 테이블이지만, 물리적으로는 여러 개의 테이블로 분리하는 기법) -> 액세스 성능 향상, 데이터 관리방법 개선
  4. 로우체이닝 발생 시 : 트랜잭션이 접근하는 칼럼유형을 분석하여 테이블을 1:1로 분리함으로써, 디스크 I/O 개선

 

슈퍼/서브 타입 모델 

  • 업무를 구성하는 데이터를 공통과 차이점의 특징을 고려하여 효과적으로 표현

논리적 모델

  • 슈퍼 타입 : 공통부분
  • 서브 타입 : 공통으로부터 상속받아 다른 엔터티와 차이가 있는 속성

 

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

  1. 개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성
  2. 슈퍼타입 + 서브타입에 대해 발생되는 트랜잭션에 대해서는 슈퍼타입+서브타입 테이블로 구성
  3. 전체를 하나로 묶어 트랜잭션이 발생할 경우 하나의 테이블로 구성

 

UNION/UNION ALL로 인한 성능 저하 

- 해결방안 : 하나의 테이블로 통합하고 PK체계나 일반속성에 구분자 부여

 

 

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

  • 인덱스의 특징은 여러 개의 속성이 하나의 인덱스로 구성되어 있을 때, 앞쪽에 위치한 속성의 값이 비교자(EQUAL)로 있어야 좋은 효율을 나타낼 수 있음
  • 앞쪽에 위치한 속성값이 "=" or "Between" or "<>"가 들어와야 인덱스를 이용할 수 있음

 

분산 데이터베이스

  1. 여러 곳으로 분산되어 있는 DB를 하나의 가상 시스템으로 사용할 수 있도록 한 DB
  2. 논리적으로 동일한 시스템에 속하지만, 컴퓨터 네트워크를 통해 물리적으로 분산되어 있는 데이터 집합

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

  • 장점 : 지역 자치성, 점층적 시스템 용량 확장, 신뢰성과 가용성, 효용성과 융통성, 빠른 응답 속도와 통신비용 절감, 각 지역 사용자 요구 수용
  • 단점 : 소프트웨어 개발 비용 증가, 오류의 잠재성 증대, 처리 비용의 증대, 설계 관리의 복잡성, 불규칙한 응답 속도, 데이터 무결성에 대한 위협

 

분산 데이터베이스 설계를 고려해야 하는 경우

  • 성능이 중요한 사이트
  • 공통 코드, 기준정보, 마스터 데이터 -> 복제 분산을 이용하여 성능 개선
  • 실시간 업무적인 특성을 가지고 있는 경우
  • 백업 사이트를 구성할 경우