대용량 데이터에 따른 성능
테이블 반정규화 중 테이블 분할 관련
- 대량 데이터 발생에 따른 테이블 분할
- 수직분할 : 컬럼 단위로 분할하여 I/O 경감, 너무 많은 수의 칼럼이 있는 경우 사용
- 수평분할 : 로우 단위로 분할하여 I/O 경감
- 파티셔닝 : 테이블 수평분할 기법, 논리적으로는 하나의 테이블이지만 물리적으로 여러 데이터 파일에 분산 저장, 데이터 조회 범위를 줄여 성능 향상
- Range Partition : 데이터 값의 범위를 기준으로 분할
- List Partition : 특정한 값을 기준으로 분할
- Hash Partition : 해시 함수를 적용하여 분할, DBMS가 알아서 분할 관리, 데이터 위치를 알 수 없음
- Composite Partition : 여러 파티션 기법을 복합저긍로 사용하여 분할
- 파티션 인덱스
- Global Index, Local Index : 여러 파티션에서 단일 인덱스 사용, 파티션 별로 각자 인덱스 사용
- Prefixed Index, Non-Prefixed Index : 파티션키와 인덱스키 동일, 파티션키와 인덱스키 구분
- 파티셔닝 : 테이블 수평분할 기법, 논리적으로는 하나의 테이블이지만 물리적으로 여러 데이터 파일에 분산 저장, 데이터 조회 범위를 줄여 성능 향상
- 성능 저하의 원인
- 하나의 테이블에 데이터 대량 집중 : 테이블 구조 너무 커져 효율성 ↓, 디스크 I/O ↑
- 하나의 테이블에 여러개의 컬럼 존재 : 디스크 점유량 ↑, 데이터 읽는 I/O량 ↑
- 대량의 데이터가 처리되는 테이블 : SQL문장에서 데이터 처리 위한 I/O량 ↑, 인덱스 구성
- 대량의 데이터가 하나의 테이블에 존재 : 인덱스의 크기 ↑, 성능저하
- 칼럼이 많아지는 경우 : 로우 체이닝, 로우 마이그레이션 발생
- 테이블에 대한 수직/수평 분할 절차
- 데이터 모델 완성
- 데이터베이스 용량 산정
- 대량의 데이터가 처리되는 테이블에 대해 트랜잭션 처리 패턴을 분석
- 칼럼 단위로 집중화된 처리가 발생하는지, 로우 단위로 발생하는지 분석하여 테이블 분리
- 칼럼 수 많을 경우 → 1:1 형태 수직 분할
- 칼럼 수 적지만 데이터 용량이 많을 경우 → 파티셔닝 고려
분산 데이터베이스와 성능
분산 데이터베이스는 빠른 네트워크 환경을 이용하여 데이터베이스를 여러 지역에서 노드로 위치시켜 사용성과 성능을 극대화 시킨 데이터베이스이다. 물리적으로 site를 분산되어있으나 논리적으로는 동일한 시스템이다. 업무 특징에 따라 위치 중심혹은 업무 필요에 의한 분산을 설계한다.
- 투명성 6가지
- 분할 투명성(단편화) : 하나의 논리적 릴레이션을 여러 단편으로 분할, 그 사본을 여러 site에 저장
- 위치 투명성 : 사용하려는 데이터의 저장 장소 알 필요 X, 위치 정보 시스템 카탈로그에 유지
- 지역사상 투명성 : 지역 DBMS, 물리적 DB 사이 사상 보장, 각 지역시스템 이름과 무관한 이름 사용 가능
- 중복 투명성 : DB 객체가 여러 site에 중복되어있는지 알 필요가 없다.
- 장애 투명성 : 구성요소(DBMS, 컴퓨터)의 장애에 무관하게 트랜잭션 원자성 유지
- 병행 투명성 : 다수 트랜잭션 동시 수행시 결과의 일관성 유지(타임스탬프, 분산 2단계 locking을 이용하여 구현)
- 설계 방식
- 상향식 : 지역 스키마 작성 후 전역 스키마 작성
- 하향식 : 전역 스키마 작성 후 지역사상 스키마 작성
- 장단점
- 장점 : 신뢰성과 가용성 증가, 빠른 응답 속도와 통신비용 절감, 용량 확장 용이
- 단점 : 관리 및 통제 어려움, 데이터 무결성 관리 어려움, S/W 개발 비용 및 처리 비용 증가, 불규칙한 응답 속도
- 적용 기법
- 테이블 위치 분산: 설계된 테이블의 위치를 분산(구조 변경 x, 중복 생성x, 정보 이용 형태가 각 위치별로 차이가 있을 경우 사용, 테이블 위치를 파악할 수 있는 도식화된 위치별 데이터베이스 문서 필요)
- 테이블 분할 분산 : 테이블을 쪼개서 분산(위치만 다른 곳에 두는 것이 아니라 각각의 테이블을 쪼개어서 분산)
- 수평 분할 : 특정 칼럼의 값 기준으로 로우 단위 분리, 자사별로 사용하는 로우가 다를 때 사용
- 수직 분할 : 칼럼 단위로 분리
- 테이블 복제 분산 : 동일한 테이블을 다른 지역이나 서버에서 동시 생성함, 원격지 조인을 내부 조인으로 변경하여 성능 향상
- 부분 복제 : 마스터 DB에서 테이블의 일부 내용만 다른 지역이나 서버에 위치
- 광역 복제 : 통합된 테이블은 본사가 가지고 있으며 각 지사에 보사와 동일한 데이터를 분배한다.
- 테이블 요약 분산
- 분석 요약 : 사이트 별 요약 정보를 본사에서 통합하여 전체 요약정보 산출
- 통합 요약 : 사이트 별 정보를 본사에서 통합하여 전체 요약정보 산출