1. 대용량 데이터에 따른 성능
- 테이블 반정규화 중 테이블 분할 관련 내용
- 블록 : 테이블의 데이터 저장 단위
- 대량 데이터 발생으로 인해 발생하는 현상
- 블록 입출력 횟수가 증가 → 디스크 입출력 횟수 증가 → 성능 저하
- row chaining : 행 길이가 너무 길어 여러 블록에 걸쳐 저장되는 형상
- row migration : 수정된 데이터가 해당 블록이 아닌 다른 블록의 빈 공간에 저장되는 현상
- 테이블 분할은 블록, 디스크 입출력을 감소시킴
- Partitioning
- 테이블 수평 분할 기법 (레코드, 행 기준)
- 논리적으로는 하나의 테이블이지만 물리적으로 여러 데이터 파일에 분산 저장
- 데이터 조회 범위를 줄여 성능을 향상시킴
- 종류
- range partition : 데이터 값의 범위를 기준으로 분할
- list partition : 특정 값을 기준으로 분할
- hash partition : 해시 함수를 적용하여 분할, DBMS가 알아서분할 관리, 데이터 위치를 알 수 없음
- composite partition : 여러 파티션 기법을 복합적으로 사용하여 분할
- Partition Index
- global index : 여러 파티션에서 사용하는 단일 인덱스
- local index : 파티션 별로 각자 인덱스 사용
- prefixed index : 파티션키 = 인덱스키
- non-prefixed index : 파티션 키 ≠ 인덱스 키
2. 슈퍼타입/서브타입 데이터 모델 변환을 통한 성능 향상
- 슈퍼타입/서브타입 데이터 모델
- 속성을 할당하여 배치하는 수평 분할된 형태의 모델
- 공통 속성은 슈퍼 타입으로 모델링
- 공통 속성으로부터 상속받아 다른 엔티티와 차이가 있는 속성은 별도의 서브타입으로 모델링
- 변환을 통해 정확하게 업무를 표현할 수 있고, 물리적 모델링 시 선택의 폭을 넓힐 수 있음
- 분석 단계, 논리적 모델링 단계에서 이용되는 형태
- 설계 단계, 물리적 모델링 단계에서 슈퍼타입, 서브타입을 각각 일정한 기준에 의해 변환해야 함
- 데이터의 양과 트랜잭션 특성을 고려해서 변환해야 성능 저하가 발생하지 않음
- 트랜잭션은 항상 일괄로 처리하는데 테이블이 개별적으로 유지되면 union 연산에 의해 성능이 저하될 수 있음
- 트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합되어 있어 불필요하게 많은 양의 데이터를 스캔해야돼서 성능이 저하될 수 있음
- 트랜잭션은 항상 슈퍼 + 서브 타입을 공통으로 처리하는데 개별로 유지되어 있거나 하나의 테이블로 집약되어 있으면 성능이 저하될 수 있음
- 변환 기술
- 1:1 타입 (OneToOne type)
- 개별로 처리하는 트랜잭션에 대해 개별 테이블을 구성
- 슈퍼타입과 서브타입 각각 필요한 속성과 유형에 적절한 데이터만 가지도록 분리하여 1:1 관계를 갖도록 함
- ex) 특정 정보에서 한 레벨 더 들어가야 세부 정보를 보여주는 경우
- 슈퍼 + 서브 타입 (Plus type)
- 슈퍼 타입과 서브 타입을 공통으로 처리하는 트랜잭션에 대해 슈퍼타입과 서브 타입 각각의 테이블 구성
- All in one 타입 (Single type)
- 일괄 처리하는 트랜잭션에 대해 단일 테이블 구성
- 불필요한 조인, union all 과 같은 연산이 줄어듬
- 1:1 타입 (OneToOne type)
3. PK/FK 칼럼 순서 조절을 통한 성능 향상
- 등호 조건이나 BETWEEN 조건이 걸리는 칼럼을 앞으로 이동시킴
- 여러 조건이 있을 경우 등호 조건이 걸리는 컬럼을 선두로
- 그래야 조건절로 앞에서부터 데이터를 필터링하고 그걸로 조회해서 성능이 좋아짐
- 예제
4. 인덱스 특성을 고려한 PK/FK DB 성능 향상
- 물리적 테이블에 FK 제약을 걸어 인덱스 생성
5. 분산 DB 데이터에 따른 성능
- 분산 DB
- 분산된 데이터베이스를 하나의 가상 시스템으로 사용할 수 있게 한 데이터베이스
- 물리적 위치를 분산되어 있으나 논리적으로는 통합된 하나의 시스템
- 과거에는 위치 중심으로 설계
- 현재는 업무 필요에 따라 설계
- 설계 방식
- 상향식 : 지역 스키마 작성 후 전역 스키마 작성
- 하향식 : 전역 스키마 작성 후 지역 스키마 작성
- 장점
- 신뢰성, 가용성 증가
- 빠른 응답 속도와 통신 비용 절감
- 용량 확장 용이
- 단점
- 관지 및 통제의 어려움
- 데이터 무결성 관리의 어려움
- 소프트웨어 개발 비용 및 처리 비용 증가
- 불규칙한 응답 속도
- 분산 DB의 투명성
- 분할 투명성 : 하나의 논리적 관계가 분할되어 각 단편의 사본이 여러 사이트에 저장됨
- 위치 투명성 : 사용하려는 데이터의 저장 장소가 명시되지 않아도 됨
- 지역 사상 투명성 : 지역 DBMS와 물리적 DB 사이의 사상이 보장됨
- 중복 투명성 : DB 객체 중복 여부를 몰라도 됨
- 장애 투명성 : 구성요소의 장애에 무관하게 트랜잭션의 원자성이 유지됨
- 병행 투명성 : 다수의 트랜잭션을 동시에 수행했을 때 결과의 일관성이 유지됨 (병렬 X)
- 분산 DB 적용 기법
- 테이블 위치 분산 : 설계된 테이블의 위치를 분산
- 테이블 분할 분산 Table Fragmentation : 테이블을 쪼개서 분산
- 수평 분할
- 수직분할
- 테이블 복제 분산 Table Replication : 동일한 테이블을 다른 지역이나 서버에서 동시 생성, 원격지 조인을 내부 조인으로 변경하여 성능 향상
- 실시간 처리보다는 야간에 배치 작업에 의해 수행되는 경우가 많음
- 부분 복제 Segment replication :
- 통합된 테이블을 한군데에 가지고 있으면서 지사별로 지사에 해당된 로우를 가지고 잇는 형태 (본사의 데이터 = 지사 데이터의 합)
- 지사간 데이터 중복은 없으나 본사와 지사간 데이터 중복은 발생
- 실제 프로젝트에서 많이 사용하고 있는 분산 기법
- 광역 복제 Broadcast replication
- 통합된 테이블을 한군데에 가지고 있으면서 지사도 본사와 동일한 데이터를 모두 가지고 있는 형태 ( 본사 데이터 = 지사 데이터)
- 테이블 요약 분산 Table Summarization
- 분석 요약 : 사이트별 요약 정보를 본사에서 통합하여 전체 요약 정보 산출
- 통합 요약 : 사이트별 정보를 본사에서 통합하여 전체 요약 정보 산출
'컴퓨터 공학 > 데이터베이스' 카테고리의 다른 글
SQLD) 내가 보려고 정리한 사소한 포인트 정리 (0) | 2022.03.09 |
---|---|
반정규화 De-normalization (0) | 2022.01.07 |
정규화 Normalization (0) | 2022.01.07 |
ERD (Entity Relationship Diagram) 기초 (0) | 2022.01.07 |
데이터 모델링의 이해 (0) | 2022.01.07 |