상세 컨텐츠

본문 제목

[ SQLD ] 데이터 모델과 성능 (2)

IT_STUDY/SQLD

by hyeminyy 2024. 2. 5. 22:37

본문

728x90

로우 체이닝

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

 

로우 마이그레이션

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

 - 로우 체이닝과 로우 마이그레이션이 발생하여 많은 블록에 데이터가 저장되면 DB 메모리에서 디스크 I/O가 발생할 때 많은 I/O가 발생하여 성능 저하 발생 트랜잭션을 분석하여 적절하게 1:1 관계로 분리함으로써 성능 향상이 가능하도록 해야 한다.

PK에 의해 테이블을 분할하는 방법 (파티셔닝)

  1. RANGE PARTITION : 대상 테이블이 날짜 또는 숫자값으로 분리가 가능하고 각 영역별로 트랜잭션이 분리되는 경우
  2. LIST PARTITION : 지점, 사업소득 핵심적인 코드값으로 PK가 구성되어 있고 대량의 데이터가 있는 테이블의 경우
  3. HASH PARTITION : 지정된 해쉬 조건에 따라 해시 알고리즘이 적용되어 테이블이 분리

테이블에 대한 수평/수직 분할의 절차

  1. 데이터 모델링을 완성한다.
  2. DB 용량산정을 한다.
  3. 대량 데이터가 처리되는 테이블에 대해 트랜잭션 처리 패턴을 분석한다.
  4. 컬럼 단위로 집중화된 처리가 발생하는지, 로우 단위로 집중화된 처리가 발생하는지 분석하여 집중화된 단위로 테이블이 분리하는 것을 검토한다.
    1. 컬럼이 많다. -> 1:1 분리
    2. 데이터 많다. -> 파티셔닝

 

슈퍼/서브 타입 모델

 - 업무를 구성하는 데이터를 공통과 차이점의 특징을 고려하여 효과적 표현. 논리적 모델이다.

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

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

  1. 개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성 (OneToOne Type)
  2. 슈퍼타입 + 서브타입에 대해 발생되는 트랜잭션에 대해서는 슈퍼 + 서브타입 데이블로 구성(Plus Type)
  3. 전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성(Single Type, All in One Type)

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

 - 인덱스의 특징은 여러 개의 속성이 하나의 인덱스로 구성되어 있을 때, 앞쪽에 위치한 속성의 값이 비교자로 있어야 좋은 효율을 나타낸다.

 - 앞쪽에 위치한 속성의 값이 가급적 '=' 아니면 최소한 범위 'BETWEEN' '<>'가 들어와야 효율적이다.

 


분산 DB 

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

분산 DB를 만족하기 위한 가지 투명성

1. 분할 투명성 (단편화)

 - 하나의 논리적 Relation이 여러 단편으로 분할되어 각 사본이 여러 site에 저장.

2. 위치 투명성

 - 사용하려는 데이터의 저장 장소 명시 불필요. 위치 정보가 시스템 카탈로그에 유지

3. 지역 사상 투명성

 - 지역 DBMS와 물리적 DB 사이의 매핑 보장

4. 중복 투명성

 - DB 객체가 여러 사이트에 중복되어 있는지 알 필요가 없는 성질

5. 장애 투명성

 - 구성 요소의 장애에 무관한 트랜잭션의 원자성 유지

6. 병행 투명성

 - 다수 트랜잭션 동시 수행 시 결과의 일관성 유지, 타임스템프, 분산 2단계 로킹 이용

728x90

관련글 더보기