성능 저하 원인
- 하나의 테이블에 데이터 대량 집중 및 여러 컬럼 존재 : 디스크 I/O 높아짐
- 대량의 데이터가 처리되는 테이블 및 하나의 테이블에 존재 : 디스크 I/O 높아짐, 성능 저하
- 컬럼이 많아지는 경우 : 로우체이닝, 로우 마이그레이션 발생
▶ 반정규화의 대상에 대해 다른 방법으로 처리
- 지나치게 많은 조인이 걸려 데이터를 조회하는 작업이 기술적으로 어려운 경우 : 뷰(VIEW) 사용
- 대량의 데이터처리나 부분처리에 의해 성능이 저하되는 경우 : 클러스터링 적용, 인덱스 조정
- 대량의 데이터로 성능이 저하되는 경우 : PK의 성격에 따라 부분적인 테이블로 분리 (파티셔닝 기법)
- 응용 애플리케이션에서 로직을 구사하는 방법 변경으로 성능 향상
▶ 대량 데이터 발생으로 인한 현상
- 블록 I/O 횟수 증가, 디스크 I/O 가능성 상승, 디스크 I/O 성능 저하
- ※ 로우체이닝(Row Chaining) : 행(Row) 길이가 길어 데이터 블록 하나에 데이터를 모두 저장하지 않고 두 개 이상의 블록에 걸쳐 하나의 로우를 저장하는 형태
- ※ 로우마이그레이션(Row Migration) : 수정된 데이터가 해당 블록에 저장하지 못하고 다른 블록의 빈 공간에 저장되는 현상
- ※ 파티셔닝(Partitioning) : 테이블 수평 분할 기법으로 논리적으로 하나의 테이블이지만, 물리적으로 여러 데이터 파일에 분산 저장하여 데이터 조회 범위를 줄여 성능 향상
- Range Partition : 범위로 분할
- List Partition : 특정한 값 기준 분할
- Hash Partition : 해시 함수 적용 분할
슈퍼/서브타입 데이터 모델
- 논리적 데이터 모델에서 주로 이용
- 물리적 데이터 모델로 설계시 문제 발생
▶ 물리적인 테이블 형식으로 변활할 때 (성능 저하 원인 3가지)
- Union 연산에 의한 성능 저하
- 트랜잭션 : 전체 대상 일괄 처리 / 테이블 : 서브타입별 개별 유지
- 불필요하게 많은 데이터 집적으로 인한 성능 저하
- 트랜잭션 : 서브타입 개별 처리 / 테이블 : 하나로 통합 변환
- 조인에 의한 성능 저하
- 트랜잭션 : 슈퍼/서브타입 공통 처리 / 테이블 : 개별 유지
▶ 변환기술
- 개별 발생 트랜잭션 : 개별 테이블(One to One type)
- 슈퍼/서브타입 발생 트랜잭션 : 슈퍼/서브타입 테이블(Plus type)
- 전체 발생 트랜잭션 : 하나의 테이블(Single type)
구분 | One to One type | Plus type | Single type |
확장성 | 우수 | 보통 | 나쁨 |
조인 필요 수 | 많음 | 보통 | 적음 |
I/O 성능 저하 | 양호 | 양호 | 나쁨 |
관리 용이성 | 나쁨 | 나쁨 | 좋음 |
적합 트랜잭션 유형 | 개별 발생 | 슈퍼/서브 발생 | 전체 발생 |
※ 쪼개질수록 확장성과 디스크 I/O 성능은 향상 하지만, 조인 성능과 관리 용이성은 낮아짐
PK/FK 컬럼 순서 및 성능
▶ 인덱스 중요성
- 데이터 조작 시 가장 효과적으로 처리될 수 있는 접근 경로 제공
- (특징) 여러개의 속성이 하나의 인덱스로 구성되어 있을때 앞쪽에 위치한 속성의 값이 비교자로 있어야 인덱스가 좋은 효율을 나타낼 수 있음. 앞쪽에 위치한 속성이 가급적 '=' 아니면 최소한 범위 'BETWEEN'이 들어와야 함
'분석가 Step 0. 자격증 > SQLD' 카테고리의 다른 글
[1장] 분산 데이터베이스 (0) | 2023.03.22 |
---|---|
[1장] 데이터 모델, 정규화, 반정규화 (0) | 2023.03.20 |
[1장] 데이터 모델링의 이해 4절 (0) | 2023.03.17 |
[1장] 데이터 모델링의 이해 3절 (0) | 2023.03.17 |
[1장] 데이터 모델링의 이해 2절 (0) | 2023.03.17 |