[SQL] 데이터베이스의 구조와 성능

김죠·2023년 12월 28일
0
post-thumbnail

1. 대량 데이터에 따른 성능

  • 아무리 설계가 잘되어 있더라도 대량의 데이터가 하나의 테이블에 집약되어 있는 경우 성능 저하 발생 가능
  • 테이블 단위의 분할(수직/수평 분할)을 통해 해결 가능
    - 수평 분할 : 행 단위로 요소 분할하여 디스크 입/출력 비용 감소
    • 수직 분할 : 컬럼 단위로 요소를 분할하여 디스크 입/출력 비용 감소

성능 저하 현상

  1. 로우 체이닝(Row Chaining)
  • 행 데이터가 너무 길어 2개 이상의 블록에 걸쳐 하나의 행이 저장된 형태
  • 하나 행 읽을 때 2개 이상의 블록을 읽게 되어 읽어야 하는 데이터가 증가하므로 성능 저하
  1. 로우 마이그레이션(Row Migration)
  • 데이터 블록에서 수정 발생 시 수정된 데이터를 다른 블록의 빈 공간을 찾아 저장하는 방식

  • 로우 체이닝과 하나 행 읽을 때 2개 이상의 블록을 읽게 됨

  • 두 현상 모두 데이터베이스 블록에 많은 데이터가 저장되고 데이터 조회 과정에서 블록 입/출력 횟수 증가

수직 분할

  • 데이터의 컬럼 수가 많은 경우 데이터를 읽을 때마다 불필요한 블록의 입/출력 증가
  • 이럴 경우 수직 분할을 통해 필요한 정보만 조회 가능

수평 분할

  • 데이터의 양이 많은 경우 데이터를 매번 조회할때마다 수천만 건의 데이터를 매번 저장하여 조회하므로 데이터베이스의 성능에 매우 큰 영향을 준다.
  • 이 경우 수평 분할을 통해 데이터의 수를 나눠 성능을 향상 시킬 수 있다
  1. 범위 분할(Range Partition) : 특정 기간을 중심으로 분할

  2. 목록 분할(List Partition) : 리스트의 특정 값을 기준으로 분할

  3. 해시 분할(Hash Partition) : 지정된 해시 조건에 따라 해싱 알고리즘 적용하여 테이블 분리

    장점

    • 기존 1개의 테이블에만 데이터 입력하는 방식보다 부하 줄어듦
    • 특정 파티션에 데이터 집중 가능성 방지
    • 데이터 처리 많아지는 경우 경합 막을 수 있음

    단점

    • 데이터 보관 주기에 따라 쉽게 삭제 기능 제공하기 어려움
    • 설계자 및 데이터 입력자는 특정 데이터가 어떤 파티션에 저장되는지 예측하기 어려움
  4. 합성 분할(Composite Partitioning) : 위의 3개의 분할 방식을 섞는 방법

테이블 수평/수직 분할 절차

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

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

2.1 슈퍼타입/서브타입

  • 슈퍼타입 : 공통적인 특성 / 서브타입 : 자신만의 속성
  • 공통적인 부분을 슈퍼 타입 엔터티로 만들고 그것으로부터 상속받아 다른 엔터티와 차이가 있는 속성을 별도의 서브 타입 엔터티로 구분
  • 업무를 구성하는 데이터의 특징을 공통/차이점으로 나누어 표현 가능하므로 직관적 모델링 가능

2.2 슈퍼타입/서브타입 모델 변환 방법 및 비교

3. 분산 데이터베이스와 성능

분산 데이터베이스

  • 여러 곳에 분산되어 있는 데이터베이스 시스템을 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
  • 논리적으로는 동일한 시스템이지만 네트워크를 통해 물리적으로 분산되어 있는 데이터의 모임
  • 물리적으로는 분산되어 있지만 논리적으로는 하나의 데이터베이스를 다루는 것처럼 사용자를 통합

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

  • 투명성 : 해당 데이터베이스를 사용하는 사용자가 데이터베이스 시스템이 논리적으로 분산되어 있음을 인식하지 못하고 나만의 데이터베이스 시스템을 사용하는 것처럼 느끼게 만드는 것

분산 데이터베이스 장단점

분산 데이터베이스 활용 방향성

  • 과거의 분산 데이터베이스 시스템은 위치 중심 -> 물리적인 지역별로 나뉘어져 있고 서버간 네트워크로 연결
  • 최근의 분산 데이터베이스 시스템은 업무 특성에 맞게 내외부 데이터베이스 나눠 설계 진행하여 더 빠른 성능
  • 그러나 원거리 or 다른 서버에 접속하면서 발생하는 네트워크 트래픽 혹은 트랜잭션 집중으로 인한 성능 저하 발생 가능

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

1. 테이블 위치(Location) 분산 : 설계된 테이블의 위치 다르게 조정

2. 테이블 분할(Fragmentation) 분산 : 각 테이블을 쪼개서 분산하는 방법, 수직/수평 분할 방법 사용

  • 수평 분할 : 테이블을 특정 컬럼 기준 행으로 분리, 컬럼 분리되지 않고 모든 데이터 분리되어 있는 형태
  • 수직 분할 : 테이블 칼럼 기준으로 칼럼 분리, 로우 단위로는 분리되지 않고 모든 데이터 분리된 형태

3. 테이블 복제(Replication) 분산 : 동일한 테이블을 다른 지역이나 서버에서 동시에 생성 및 관리

  • 부분 복제 : 통합된 테이블을 마스터 데이터베이스에 가지고 있으면서 각 지사별로 지사에 해당하는 로우 가지고 있는 형태

  • 광역 복제 : 통합된 테이블을 마스터 데이터베이스에 가지고 있으면서 각 지사별로는 마스터 데이터베이스와 동일한 데이터 가지고 있는 형태

4. 테이블 요약(Summarization) 분산 : 지역/서버 간 데이터가 비슷하지만 서로 다른 유형으로 존재하는 경우

  • 분석 요약 : 동일 테이블 구조를 가지면서 분산되어 있는 동일 내용 데이터 이용한 통합 데이터 산출
  • 통합 요약 : 분산되어 있는 다른 내용의 데이터를 이용하여 통합된 데이터 산출
profile
1=850

0개의 댓글