본문 바로가기

스파르타 코딩클럽/[강의] SQLD 자격증 대비반

[SQLD 자격증 대비반] 챕터 5. 데이터베이스 성능

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

  • 데이터 양이 많을 경우 테이블 내에서 수많은 트랜잭션 발생 ➡️ 데이터베이스 성능 저하
  • 수평 분할 : 행 단위로 요소를 분할하여 디스크 입/출력 비용 감소
  • 수직 분할 : 칼럼 단위로 요소를 분할하여 디스크 입/출력 비용 감소

 

성능 저하 현상

  • 로우 체이닝
    • 행 데이터가 길어서 2개 이상의 데이터 블록에 걸쳐 하나의 행이 저장된 형태
    • 하나의 행을 읽을 때 2개 이상의 데이터 블록 읽음 ➡️ 읽어야 하는 데이터 증가하여 성능 저하
  • 로우 마이그레이션
    • 데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 블록에 저장하지 못하고, 다른 블록의 빈 공간을 찾아서 저장
    • 로우 체이닝과 마찬가지로 절대적으로 읽어야 하는 데이터 블록 수가 증가하여 성능 저하

 

테이블 수직 분할

  • 한 테이블에 많은 수의 칼럼이 있는 경우의 성능 향상
  • 1개의 행을 읽을 때 읽어야 하는 칼럼의 수 감소 ➡️ 필요한 데이터 블록의 수 감소

도서 정보 테이블 수직 분할(Barker)

 

테이블 수평 분할

  • 대량 데이터 저장 및 처리가 성능에 미치는 영향
  • 칼럼과 다르게 테이블의 저장 건수(행)가 많은 경우, 수평 분할을 통해 성능 향상

  • 범위 분할(Range Partition)
    • 수평 분할은 파티셔닝이라고 하며 특정 기간을 중심으로 분할하는 것을 범위 파티셔닝이라고 함
    • 데이터 보관 주기에 따른 테이블 관리 용이
    • 데이터 보관 주기에 따른 테이블 별 조회 가능
    • ex) 통신요금 테이블의 월 단위 파티션 테이블 생성
  • 목록 분할(List Partition)
    • 리스트 파티션의 경우 행의 수가 매우 많음
    • ex) 지역별 테이블 분리 ➡️ 해당 지역만 조회하면 되기 때문에 SQL문 성능 향상
  • 해시 분할(Hash Partition)
    • 지정된 Hash 조건에 따라 해싱 알고리즘을 적용하여 테이블 분리
    • 주문 번호나 주민번호와 같은 UNIQUE 칼럼을 기준으로 테이블 분할
    • 데이터 관리보다는 성능 향상 목적
    • 장점
      - 해싱 알고리즘에 의해 분리되어 데이터 입력
        ➡️기존 1개 테이블에만 데이터를 입력하는 방식보다 부하 감소
      - 특정 파티션에 데이터 집중 가능성이 있는 범위 분할의 단점 보완
      - 데이터 처리가 많아지는 경우 경합을 막을 수 있음
    • 단점
      - 데이터 보관 주기에 따라 쉽게 삭제 X
      - 설계자 및 데이터 입력자는 특정 데이터가 어떤 파티션에 저장되는지 예측 어려움
  • 합성 분할(Composite Partitioning)
    • 위의 3개 분할 방식을 섞는 방법

 

테이블 분할 절차

  1. 데이터베이스 모델링 진행
  2. 데이터베이스 테이블 용량 산정
  3. 데이터 처리 과정에서 트랜잭션 처리 패턴 분석
  4. 데이터 처리 과정이 칼럼과 로우 중 어디에 집중되는지 분석하고 집중된 부분의 테이블 파티셔닝

 

슈퍼/서브타입 모델

  • 업무를 구성하는 데이터 특징을 공통점과 차이점으로 나누어 표현 가능하기 대문에 직관적 모델링 가능
  • 슈퍼타입은 공통적인 속성이고, 서브타입은 자신만의 속성 의미

 

슈퍼/서브타입 모델 변환 방법

  • 슈퍼 타입(Single / All in One)
    • 슈퍼/서브타입 모델을 하나의 테이블로 변환
  • 서브 타입(Plus / Super + Sub)
    • 슈퍼타입과 서브타입 테이블로 변환
    • 도출된 각 서브타입에는 변환 전 슈퍼 엔터티에 있던 칼럼을 공통적으로 가지고 있음
  • 개별 타입(OneToOne / 1:1)
    • 슈퍼/서브타입을 슈퍼 타입과 서브 타입의 각 개별 테이블로 변환
    • 슈퍼/서브 테이블 모두 생성
  슈퍼 타입 서브 타입 개별 타입
특징 하나의 테이블 각각의 서브타입 테이블 슈퍼/서브 각각의 테이블
확장성 나쁨 보통 좋음👍
조인성능 우수함👍 나쁨 나쁨
I/O 성능 나쁨 좋음👍 좋음👍
관리 용이성 좋음👍 좋지 않음  좋지 않음

 

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

  1. 트랜잭션은 항상 일괄적으로 처리
    • 테이블은 개별적으로 유지되기 때문에 UNION 연산에 의해 성능 저하 가능성
  2. 트랜잭션은 항상 서브타입을 개별로 처리
    • 테이블이 하나로 통합되어 있어 불필요하게 많은 데이터를 처리하는 과정에서 성능 저하 가능성
  3. 트랜잭션은 항상 슈퍼타입과 서브타입을 공통으로 처리
    • 개별로 유지되거나 하나의 테이블로 집약되면 성능 저하 가능성

 

PK 순서와 성능 사이의 관계

  • 복합 PK의 경우 데이터 성능 향상을 위해 테이블에 발생되는 트랜잭션 조회 패턴에 따라 칼럼 순서 조정
  • PK 칼럼의 위치에 따라 SQL 쿼리문의 성능이 달라질 수 있음

FK 순서와 테이블 인덱스 구성 사이의 관계

  • 논리 데이터 모델 상으로 관계에 의한 외래키(FK) 제약이 걸린 경우 실제 물리 데이터베이스에 대한 적용 여부는 물리 데이터 베이스가 어떻게 설계되어 있는지에 따라 다름
  • 사실 물리적인 외래키(FK)의 생성 여부와 상관없이 논리/물리 FK 제약 조건은 외래키 칼럼에 대해 인덱스를 생성하는 것이 성능 상의 우위를 가질 확률 높음

 

분산 데이터베이스

  • 여러 곳에 분산되어 있는 데이터베이스 시스템을 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
  • 물리적으로 동일한 위치에 여러 대의 컴퓨터로 구성된 경우 혹은 컴퓨터 네트워크에서 상호 연결된 컴퓨터 군에 분산되어 있는 경우 등
  • 논리적으로는 동일한 시스템이지만 네트워크를 통해 물리적으로 분산되어 있는 데이터 모임
  • 업무 구성에 따른 아키텍처가 어떤 형태로 구성되어 있는지 등을 충분히 고려하여 분산 데이터베이스 적용
  • 투명성 : 해당 데이터베이스를 사용하는 사용자가 데이터베이스 시스템이 논리적으로 분산되어 있음을 인식하지 못하고 나만의 데이터베이스 시스템을 사용하는 것처럼 느끼게 만드는 것
    • 분할 투명성
      - 하나의 논리적 관계가 여러 단편으로 분할되어 각 사본이 여러 사이트에 저장
      - 이때 사용자는 분할되어 저장되는게 아니라 한 곳에 모두 위치한 것처럼 느껴야함
    • 위치 투명성
      - 위치 정보는 System Catalog에 유지
      - 사용자는 자신의 데이터가 어디에 위치하는지 신경 X
      - 결과적으로 사용하려는 데이터 저장소를 명시할 필요 X
    • 지역 사상 투명성
      - 지역 DBMS와 물리적 DB 사이의 연결됨(mapping) 보장
      - 각 지역 시스템 이름과 무관한 이름 사용 가능
      - 사용자는 해당 데이터가 어떤 지역에 위치하는지 알 필요 X
    • 중복 투명성 : DB 객체가 여러 사이트에 중복되어 있는지 알 필요 X
    • 장애 투명성 : 구성요소에서 발생하는 장애와 무관한 트랜잭션의 원자성 유지
    • 병행 투명성
      - 다수 트랜잭션이 동시에 수행 시 결과의 일관성 유지
      - 1단계는 Time stamp, 2단계는 Locking을 이용하여 구현
  • 장단점
    장점 단점
    지역 자치성, 점증적 시스템 용량 확장 소프트웨어 개발 비용 증가
    신뢰성 & 가용성 오류의 잠재성 증대
    효용성 & 융통성 처리 비용 증대
    빠른 응답 속도 & 통신 비용 절감 설계 및 관리의 복잡성과 비용
    데이터의 가용성 & 신뢰도 증가 불규칙한 응답 속도
    시스템 규모의 적절한 조절 통제 어려움
    각 지역 사용자의 요구 수용 증대 데이터 무결성에 대한 위협(전처리 필요)

 

 

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

  • 테이블 위치(Location) 분산 : 설계된 테이블을 다르게 위치


  • 테이블 분할(Fragmentation) 분산 : 테이블을 나누는 기준에 따라 수평/수직 분할로 구분
  • 테이블 복제(Replication) 분산 : 동일한 테이블을 다른 지역이나 서버에서 동시에 생성하고 관리
    • 부분복제(Segment Replication) : 통합된 테이블을 마스터 데이터베이스에 가지고 있으면서 각 지사별로는 지사에 해당하는 로우를 가지고 있는 형태
    • 광역복제(Broadcast Replication) : 통합된 테이블을 마스터 데이터베이스에 가지고 있으면서 각 지사별로 마스터와 동일한 데이터 가지고 있는 형태
  • 테이블 요약(Summarization) 분산 : 지역/서버 간의 데이터가 비슷하지만 서로 다른 유형으로 존재
    • 분석요약(Rollup Summarization)
      - 동일한 테이블 구조를 가지고 있으면서 분산되어 있는 동일한 내용의 데이터를 이용한 통합된 데이터 산출
      - 유저 활동이 가장 적은 시간에 작업
    • 통합요약(Consolidation Summarization)
      - 분산되어 있는 다른 내용의 데이터를 이용하여 통합된 데이터 산출
      - 중앙으로 모아서 다시 산출

 

분산 데이터베이스를 활용한 성능 향상 사례