반응형
SMALL
성능 개선 목표
- 처리 능력(Throughput)
- 해당 작업을 수행하기 위해서 소요되는 시간
- 처리 능력 = 트랜잭션 수 / 시간
- 처리 시간(Throught Time)
- 처리 시간은 작업이 완료되는 데 소요되는 시간을 의미함
- 배치 프로그램의 성능 목표로 설정하며 배치 작업의 수행 시간을 단축하기 위해서는 아래와 같은 작업을 고려함
병행 처리(Parallel Processing)를 실시 |
인덱스 스캔보다 Full 테이블 스캔으로 처리 |
Nest-Loop 조인보다 Hash 조인으로 처리 |
대량 작업을 하기 위한 SORT_AREA, HASH_AREA의 메모리를 확보 |
병목을 없애기 위한 작업 계획 |
파티션 생성 |
- 응답 시간(Response Time)
- 사용자의 입력 후 시스템이 응답할 때까지 시간으로 최종 사용자가 느끼는 시스템의 성능 척도
- 일반적으로 OLTP 시스템에서 성능 지표가 되며 응답 시간을 향상하기 위해서는 아래와 같은 작업을 고려함
인덱스를 이용하여 엑세스 경로를 단축 |
부분 범위 처리를 실시 |
Sort-Merge 조인이나 Hash 조인을 사용하지 않고 Nest-Loop 조인으로 처리 |
시퀀스(Sequence) 오브젝트를 이용하여 잠김(Locking) 발생을 억제 |
하드 파싱을 억제 |
- 로드 시간(Load Time)
- 정기적 혹은 비정기적으로 발생하는 데이터베이스에 데이터를 로드하는 작업 수행 시간을 의미함
- 로드 시간을 단축하기 위해서는 아래와 같은 작업을 고려함
로그 파일을 생성하지 않는 다이렉트 로드(Direct Load)를 사용 |
병행 로드 작업을 실시 |
DISK IO 경합이 없도록 작업을 분산 |
인덱스가 많은 테이블인 경우는 인덱스를 삭제하고 데이터 로드 후 인덱스를 생성 |
파티션을 이용하여 작업을 단순화 |
성능 설계
1. 엔터티 통합
- 유사한 엔터티를 하나로 만들어 데이터베이스를 간단하게 구성하는 것을 의미함
- 트랜잭션 유형에 대한 사전조사가 필요함
- 데이터량과 트랜잭션량이 많지 않은 경우 통합을 유도함
- 데이터량과 트랜잭션량이 많은 경우는 트랜잭션의 유형에 따라 결정해야 함
2. 데이터 모델 구조
- 정규화와 반정규화를 통한 성능 개선
- 데이터 모델 단순화를 통한 성능 개선
3. 대용량 데이터 특성
- 테이블 수직/수평 분할을 통한 성능 개선
- 슈퍼타입/서브타입 모델의 성능을 고려한 물리 데이터 모델을 통한 성능 개선
- 이력 데이터 모델의 성능 향상 기법을 통한 성능 개선
- 공통 코드 처리를 통한 성능 개선
- 데이터 분산 환경 구성을 통한 성능 개선
4. PK, FK, 인덱스
- PK 순서는 인덱스 정렬 구조를 이해한 상태에서 인덱스를 효율적으로 이용할 수 있도록 지정
- 여러 개의 속성이 하나의 인덱스로 구성되어 있을 때 앞 쪽에 위치한 속성의 값이 비교 대상에 포함되어 있어야 좋은 효율을 보이며 가급적 동등비교가 되거나 적어도 범위비교가 되어야 함
관계형 테이블 전환
- 논리 모델과 물리 모델의 용어 비교
논리모델 | 물리모델 | |
엔터티 | 테이블 | |
속성 | 컬럼 | |
식별자 | 주식별자 | Primary Key |
보조식별자 | Unique Index Non-Unique Index |
|
외부식별자 | Foreign Key | |
도메인 | Check Constraint |
- 주식별자를 Primary Key로 변환할 때에는 아래와 같이 진행해야 함
- 데이터 모델의 주식별자는 Primary Key로 전환
- 데이터를 유일하게 식별할 수 있게 함
- Primary Key는 Null 값을 갖지 않음
- Primary Key는 변경되지 않음
- 가능하면 모든 테이블에 Primary Key를 정의
테이블
1. 테이블의 유형
유형 | 설명 |
Heap-Organized Table | ☞ 대부분의 상용 DBMS에서 표준 테이블로 사용 ☞ 테이블 내에서 Row의 저장 위치는 특정 속성 값에 기초하지 않고 해당 Row가 삽입될 때 결정 |
Clustered Index Table | ☞ PK 값이나 인덱스 키 값의 순서로 데이터가 저장되는 테이블 ☞ B 트리의 리프 노드에 RID 대신 데이터 페이지가 존재 ☞ 데이터 페이지가 키 값의 순서로 정렬되어 있기 때문에 프리 패치가 가능 ☞ 탐색은 빠르나 삽입이 느림 |
Partitioned Table | ☞ 대용량의 테이블을 보다 작은 논리적인 단위로 나눔 ☞ 범위(Range) 분할, 해시(Hash) 분할, 결합(Composite) 분할 등의 방식이 있음 ☞ 파티션 키에 따라 성능이 좌우되므로 전략적으로 키를 선정해야 함 |
External Table | ☞ 외부 파일을 데이터베이스 안에 존재하는 일반 테이블 형태로 이용할 수 있는 데이터베이스 객체 ☞ DW, ETL 작업 등에 유용한 테이블 |
Temporary Table | ☞ 트랜잭션이나 세션 별로 데이터를 저장하고 처리할 수 있는 임시 테이블 ☞ 저장된 데이터는 트랜잭션이 종료되면 휘발하며 다른 세션에서 처리되는 데이터는 공유 불가능함 |
2. 설계 시 고려사항
- 컬럼 데이터 길이 합이 블록 사이즈보다 큰 경우 체인이 발생하여 속도 저하 현상을 유발하므로 수직 분할을 고려함
- 컬럼 길이가 길고 특정 컬럼의 사용 빈도 차이가 심한 경우나 같이 처리되는 경우가 드믄 경우는 수직 분할을 고려함
- 수직 분할은 분할되는 테이블이 하나의 트랜잭션에 의해 동시에 처리되는 경우나 조인이 빈번하게 발생되는 경우가 없어야 함
- 검색 조건으로 빈번하게 사용되는 컬럼은 문자 타입을 사용하는 것이 더 효율적임
- 사건의 일자나 시간을 기록하는 속성은 시간 데이터 타입을 선택하는 추세임
데이터 타입
- 문자형 데이터는 데이터 길이의 가변 여부를 고려
- 숫자형 데이터는 숫자 데이터 타입으로 할지 문자형 데이터 타입으로 할지 고려
- 날짜형 데이터는 문자 데이터 타입으로 지정하는 편이 효율적임(검색 조건으로 자주 쓰일 경우)
인덱스
유형 | 설명 |
트리 기반 인덱스 | ☞ 대부분의 상용 DBMS에서 트리 구조를 기반으로 하는 B+ 트리 인덱스를 주로 사용 ☞ B+ 트리는 밸런스 트리(Balanced Tree) 형태임 ☞ 대용량 처리의 데이터 삽입과 삭제 등에 좋은 성능을 유지함 |
비트맵 인덱스 | ☞ 키 값의 비교를 비트 연산으로 처리하여 다중 조건을 만족하는 튜플의 개수를 계산하는 데 적합함 ☞ 압축 효율이 좋음 |
함수 기반 인덱스 | ☞ 함수나 수식으로 계산된 결과에 대해 인덱스를 생성, 사용할 수 있는 기능을 제공함 |
비트맵 조인 인덱스 | ☞ 물리적인 구조는 비트맵 인덱스와 동일 ☞ 기본 테이블을 기준으로 조인된 결과를 기존의 비트맵 인덱스와 같은 구조로 저장하여 카디널리티가 낮은 데이터에 대한 엑세스에 좋은 성능을 얻을 수 있게 하는 방법 |
도메인 인덱스 | ☞ 새로운 구조의 인덱스 타입을 정의하여 DBMS에서 지원하는 인덱스처럼 사용할 수 있음 |
뷰
- 하나 이상의 테이블에서 파생된 데이터를 보는 또 다른 방법을 제공
- 데이터베이스의 정보 중에서 선택된 부분만을 보도록 제한
- 사용자가 관심을 가지는 데이터에만 초점을 맞출 수 있음
- 자주 사용되는 질의를 정의하여 사용자의 데이터 조작을 단순화할 수 있음
- 사용자의 요구에 맞는 뷰를 제공하거나 데이터를 제한할 수 있음
분산 데이터베이스
- 여러 곳으로 분산되어있는 데이터베이스를 하나의 가상 시스템으로 사용할 수 있도록 한 데이터베이스
- 물리적 Site 분산과 논리적 사용자 통합 및 공유
- 분산 데이터베이스의 구조는 아래와 같음
분산 데이터베이스 관리 시스템
투명성 | 기능 | 장점 | 단점 |
분할(단편화) | ☞ DB 분할 관리에 무관한 작업 환경을 제공 | ☞ Bottle neck 방지 ☞ 시스템 성능 향상 |
☞ 충분한 설계 기술이 요구됨 |
위치 투명성 | ☞ Data 저장 장소에 무관한 접근을 제공 | ☞ Application 단순화 ☞ Data의 자유로운 Site 왕래 |
☞ 이중 처리로 속도 저하 ☞ 저장 공간 낭비 |
지역 사상 | ☞ 각 지역 시스템과 무관한 이름 사용 | ☞ 상향식 점진적 확장 제공 | ☞ 이질형 시스템 구현 시 복잡 |
중복 투명성 | ☞ 논리적 Data 객체의 Site 중복 가능 ☞ Data 일관성 유지에 무관한 사용 제공 |
☞ 질의 응답 성능 개선 | ☞ 갱신 전파 Overhead 추가 ☞ 기억 공간 |
장애 투명성 | ☞ 구성요소 장애에 무관한 트랜잭션 원자성 유지 | ☞ 장애 처리 구현 단순 | 장애 원인 규명이 복잡함 |
병행 투명성 | ☞ 동시 수행 시각 트랜잭션 결과 일관성 유지 | ☞ 자원 사용 극대화 | ☞ 복잡한 Locking |
반응형
LIST
'Database' 카테고리의 다른 글
[Big Data] 데이터 탐색 (0) | 2020.11.15 |
---|---|
[Big Data] 데이터 전처리 (2) | 2020.11.15 |
[Database] 데이터 품질과 표준화 (0) | 2020.11.12 |
[Database] 함수 종속성(Functional Dependency)과 정규화(Normalization) (0) | 2020.11.11 |
[Database] ER(Entity-Relationship) Model과 IE(Information Engineering) (0) | 2020.11.11 |