본문 바로가기
DB/SQLD

[SQLD] 데이터 모델과 성능

by 댕꼬 2022. 5. 8.
728x90

데이터 모델과 성능


① 대량의 데이터에 따른 성능

 

대량의 데이터의 문제점

  1. 로우체이닝 : 로우 길이가  너무 길어 두개 이상의 블록에 걸쳐 하나의 로우가 저장되는 현상
  2. 로우마이그레이션 : 데이터 블록에서 수정이 발생 시 해당 데이터 블록에 저장하지 못하고, 다른 블록의 빈공간에 저장하는 방식

대량데이터 저장의 성능 향상법 (파티셔닝 기법)

  • RANGE PARTITION - 가장 많이 사용, 날짜/숫자값으로 분리가 가능
  • LIST PARTITION - 지점, 사업소, 핵심적인 코드값 등으로 PK가 구성되어 있는
  • 경우 사용, 보관주기에 따른 삭제기능X
  • HASH PARTITION - 해쉬알고리즘이 적용되어 테이블이 분리, 설계자는 테이블에 데이터가 정확하게 들어갔는지 확인하기 어려우며(위치 알수없음) 보관주기에 따른 삭제기능X

 

 

②슈퍼/서브타입 데이터모델

 

슈퍼/서브타입 데이터모델

: 공통부분을 슈퍼타입으로 모델링하고, 공통으로부터 상속받아 다른 엔티티와 차이가  있는 속성에 대해서는 별도의 서브엔티티로 구분하여 업무의 모습을 정확하게 표현 -> 논리적 데이터모델에서 이용되며 분석단계에서 많이 쓰임

 

슈퍼/서브타입에 대한 변환을 잘못할 경우 나타나는 문제점

  1. 트랜잭션은 일괄로 처리하나 테이블은 개별로 유지되어 union연산에 의한 성능저하
  2. 트랜잭션은 서브타입 개별로 처리하나,테이블은 하나로 통합되어있어 성능저하
  3. 트랜잭션은 항상 슈퍼+서브타입을 공통으로 처리하나, 개별로 유지되어있거나  하나의 테이블로 집약되어 있어 성능저하

데이터 양에 따른 바람직한 데이터모델

소량 데이터일 경우 대량 데이터일 경우
성능에 영향을 미치지 않기 때문에
가급적 1:1관계를 유지하는 것이 바람직

- 개별발생되는 트랜잭션은 개별테이블 구성
- 슈퍼+서브타입에 발생되는 트랜잭션은  슈퍼+서브타입테이블로 구성
- 전체를 하나로 묶어 트랜잭션이 발생할땐 하나의 테이블로 구성

 

 

③ PK/FK 칼럼 순서와 성능개선

 

PK

- 가급적 = 아니면 BETWEEN, <,>가 들어와야 함

 

FK

- 물리적 테이블에 FK제약을 걸었을 때는 반드시 FK인덱스  생성

- FK제약이 걸리지 않았을 경우에는 FK인덱스를 생성하는것을 기본정책으로 하되 거의 활용되지 않을 때 FK인덱스 삭제

 

 

 

④분산데이터베이스와 성능

 

분산데이터베이스란?

: 여러곳으로 분산되어 있는 데이터베이스를 하나의 가상시스템으로 사용할 수 있도록 한 데이터베이스

 

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

- 분할투명성, 위치투명성, 지역사상투명성,  중복투명성, 장애투명성, 병합투명성

 

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

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

분산데이터의 가치

- 통합된 데이터베이스에서 제공할 수 없는 빠른성능을 제공한다

- 원거리 또는 다른  서버에 접속하여 처리하므로, 네트워크 부하 및 트랜잭션 집중에 따른 성능저하의 원인을준산된 데이터베이스 환경을 구축하므로 빠른 성능을 제공

 

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

- 테이블 위치 분산,  테이블 분할분산, 테이블 복제분산, 테이블 요약분산

 

분산설계가  효과적인 경우

  • 성능이 중요한 사이트
  • 공통코드, 기준저옵, 마스터데이터 등에 대해 분산환경을 구성하면 성능이 좋아짐
  • 실시간 동기화가 요구되지 않는 경우
  • 특정서버에 부하가 집중이 될 때 부하를 분산할때 좋다.
  • 백업 사이트를  구성할 때 간단하게 분산기능을 적용하여 구성 가능

 

728x90

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

[SQLD] SQL기본 - 명령어  (0) 2022.05.13
[SQLD] 정규화, 반정규화  (0) 2022.05.08
[SQLD] 데이터모델링 3요소 + 식별자  (0) 2022.05.07
[SQLD] 데이터모델링의 이해  (0) 2022.05.05

댓글