01. 대용량 데이터에 따른 성능
대량 데이터 발생에 따른 테이블 분할 개요
- 대량의 데이터가 하나의 테이블에 집약되어 있고, 하나의 하드웨어 공간에 저장되어 있으면 성능저하가 생긴다
- 하나의 테이블에 매우 많은 컬럼이 존재하여 디스크의 많은 블록을 점유하는 경우에도 성능이 저하될 수 있다
- 대량의 데이터가 저장된 테이블의 인덱스의 경우에도 인덱스의 트리구조가 너무 커져 DML 처리를 할 때 성능이 저하되는 경우가 발생한다
- 컬럼이 많아지면 물리적인 디스크의 여러 블록에 걸쳐 저장되므로 Row 길이가 길어 로우체이닝과 로우마이그레이션이 많아진다
로우체이닝(Row Chaining)
로우 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태
로우마이그레이션(Row Migration)
데이터 블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식
⚠️ 로우체이닝, 로우마이그레이션이 많이 발생하면 I/O가 증가하여 성능이 저하된다
파티셔닝(Prartitioning)
데이터 사이즈가 큰 테이블을 두 개 이상의 작은 테이블로 나누는 것을 파티셔닝이라고 한다. 보통 쿼리가 스캔할 데이터 범위를 좁혀서 응답시간을 빠르게 하기 위한 목적으로 사용한다.
대량 데이터 저장 및 처리로 인한 성능 저하
대량 데이터가 1개의 테이블에 저장될 경우 파티셔닝을 적용하여 성능향상을 도모할 수 있다
💡 파티셔닝 방법
- LIST PARTITION(특정값 지정)
- RANGE PARTITION(범위)
- HASH PARITITION(해쉬 적용)
- COMPOSITE PARTITION(범위와 해쉬가 복합)
① RANGE PARTITION(범위)
대상 테이블이 날짜 또는 숫자값으로 분리가 가능하고 각 영역별로 트랜잭션이 분리된다면 RANGE PARTITION을 적용한다
- 가장 많이 사용하는 파티셔닝 기법이다
- 테이블에 데이터를 쉽게 지우는 것이 가능하다
- 보관주기에 따른 테이블관리 용이하다
e.g.
[날짜 + 매출액] 으로 구성되어 있는 대용량의 테이블의 경우
월 단위 또는 년 단위의 테이블을 나누어 저장한다
② LIST PARTITION(특정값 지정)
- 지점, 사업소, 사업장, 핵심적인 코드값 등으로 PK가 구성 되어 있고 대량의 데이터가 있는 테이블이라면 값 각각에 의해 파티셔닝이 되는 LIST PARTITION을 적용할 수 있다
- 대용량 데이터를 특정값에 따라 분리하여 저장할 수는 있으나 RANGE PARTITION과 같이 데이터 보관주기에 따라 쉽게 삭제하는 기능은 제공될 수 없다
e.g.
대용량의 고객 테이블이 존재할 때 지점, 사업소와 같은 핵심적인 PK를 기준으로 파티션을 나눈다
(강남지점 고객, 마포구지점 고객... 처럼)
③ HASH PARTITION(해쉬적용)
- 지정된 해쉬 알고리즘을 적용하여 테이블을 분리함
- 설계자는 어떤 파티션에 데이터가 저장되는지 알기 어려움
④ COMPOSITE PARTITION(범위와 해쉬가 복합)
- Main/Sub 관계로 나누어 분할하는 파티셔닝 기법
02. DB 구조와 성능
슈퍼/서브 타입 데이터 모델의 변환기술
- 개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성
- 슈퍼타입+서브타입에 대해 발생되는 트랜잭션에 대해서는 슈퍼타입+서브타입 테이블로 구성
- 전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성
PK 순서를 결정하는 기준
PK 순서를 결정하는 기준은 인덱스 정렬구조를 이해한 상태에서 인덱스를 효율적으로 이용할 수 있도록 PK 순서를 지정해야 한다. 즉, 인덱스의 특징은 여러 개의 속성이 하나의 인덱스로 구성 되어 있을 때 앞쪽에 위치한 속성의 값이 비교자로 있어야 인덱스가 좋은 효율을 나타낼 수 있다. 앞쪽에 위치한 속성 값이 가급적 '=' 아니면 최소한의 범위 'BETWEEN' '<>'가 들어와야 인덱스를 이용할 수 있는 것이다.
💡 '='로 들어온 조건에 해당하는 칼럼이 인덱스의 가장 앞쪽에 위치할 때 인덱스의 이용 효율성이 가장 높다고 할 수 있다.
03. 분산DB 데이터에 따른 성능
분산 데이터베이스
데이터베이스를 네트워크 환경을 이용하여 여러 지역, 노드로 위치시켜 사용성/성능 등을 극대화 시킨 데이터베이스
분산 데이터 베이스의 투명성
- 분할 투명성: 하나의 릴레이션이 여러 단편으로 분할되어 단편의 사본들이 여러 시스템에 저장되어 있음
- 위치 투명성: 사용하려는 데이터베이스의 저장 장소 명시 불필요
- 지역사상 투명성: 지역 DBMS와 물리적 DB사이의 맵핑이 보장. 각 지역시스템 이름과 무관한 이름 사용가능
- 중복 투명성: DB 객체가 여러 시스템에 중복 되어도 상관 없다
- 장애 투명성: 장애가 나도 사용자는 상관이 없다
- 병행 투명성: 다수 사용자 동시 수행시 결과 이상 없음
분산 데이터베이스 장단점
장점
- 지역 자치성, 점증적 시스템 용량 확장
- 신뢰성, 가용성
- 효용성과 융통성
- 빠른 응답 속도와 통신비용 절감
- 시스템 규모의 적절한 조절
- 각 지역 사용자의 요구 수용 증대
단점
- 소프트웨어 개발 비용
- 오류의 잠재성 증대
- 처리 비용의 증대
- 설계, 비용의 증대
- 설계, 관리의 복잡성과 비용
- 불규칙한 응답 속도
- 통제의 어려움
- 데이터 무결성에 대한 위협
'자격증 > SQLD' 카테고리의 다른 글
[SQLD] 데이터 유형 (0) | 2023.08.30 |
---|---|
[SQLD] SQL 기본 - 관계형 데이터베이스 개요 (0) | 2023.08.30 |
[SQLD] 데이터 모델과 성능 - 정규화와 성능, 반정규화와 성능 (0) | 2023.08.29 |
[SQLD] 데이터 모델링의 이해 - 식별자 (Identifiers) (0) | 2023.08.29 |
[SQLD] 데이터 모델링의 이해 - 엔터티(Entity), 속성(Attribute), 관계(Relationship) (0) | 2023.08.29 |