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

2024. 2. 5. 22:37·IT_STUDY/SQLD
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
저작자표시 (새창열림)

'IT_STUDY > SQLD' 카테고리의 다른 글

[ SQLD ] NULL, 정렬, 숫자함수, 문자함수, 날짜함수  (0) 2024.03.01
[ SQLD ] ESCAPE / ROWNUM / TOP()  (1) 2024.02.10
[ SQLD ] SQL 연산 / Alias / CONCAT / IN / LIKE / NOT  (0) 2024.02.07
[ SQLD ] 데이터 모델과 성능 (1)  (1) 2024.02.05
[ SQLD ] 데이터 모델링의 이해  (0) 2024.02.05
'IT_STUDY/SQLD' 카테고리의 다른 글
  • [ SQLD ] ESCAPE / ROWNUM / TOP()
  • [ SQLD ] SQL 연산 / Alias / CONCAT / IN / LIKE / NOT
  • [ SQLD ] 데이터 모델과 성능 (1)
  • [ SQLD ] 데이터 모델링의 이해
hyeminyy
hyeminyy
Full Stack Developer | consistency
  • hyeminyy
    maemingu
    hyeminyy
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • Backend (46)
        • Java (15)
        • JSP & Servlet (5)
        • EL & JSTL (3)
        • Spring (15)
        • DataBase (4)
        • 알고리즘 (4)
      • Frontend (11)
        • Next.js (5)
        • JavaScript (3)
        • Vue.js (3)
      • IT_STUDY (21)
        • 정보처리기사 (9)
        • SQLD (8)
        • 개인공부 (4)
      • Developer! (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
    • Notion-portfolio
  • 공지사항

  • 인기 글

  • 태그

    httpServletRequest
    백앤드
    Spring
    정보처리기사 실기
    정처기
    정보처리기사
    JSP
    정처기 요약
    springboot
    SQL
    Java
    NextJS
    정처기 실기
    springProject
    sqld자격증
    정처기 필기 요약
    MVC
    Next.js
    프론트엔드
    SQLD
    코딩테스트
    정처기 실기 요약
    뷰
    알고리즘
    정보처리기사 실기 요약
    개발자
    jstl
    백앤드개발자
    Servlet
    el
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hyeminyy
[ SQLD ] 데이터 모델과 성능 (2)
상단으로

티스토리툴바