Learn & Record

[요약정리] SQLD 필기 요약 (칼럼 반정규화 ~ 인덱스 특성을 고려한 PK/FK DB 성능향상) 본문

Certificate/SQLD

[요약정리] SQLD 필기 요약 (칼럼 반정규화 ~ 인덱스 특성을 고려한 PK/FK DB 성능향상)

Walker_ 2024. 2. 25. 12:39

SQLD_요약정리.pdf
0.22MB


 

칼럼 반정규화 ( 중복, 파생, 이력, pk, 오작동)

1. 중복 : 조인에 의해 처리할 때 성능저하를 예방하기 위해 중복된 칼럼을 위치시킴

2. 파생 : 트랜잭션이 처리되는 시점에 계산에 의해 발생되는 성능저하를 예방하기 위해 미리 값을 계산 후 칼럼에 보관

3. 이력테이블 : 대량의 이력데이터를 처리할 때 불특정날 조회나 최근 값을 조회할 때 나타날 수 있는 성능저하를 예방하기 위해 이력테입르에 기능성 칼럼(최근값 여부, 시작과 종료일자 등)을 추가함

4. pk에 의한 칼럼 추가 : 이미 pk안에 데이터가 존재하지만 성능향상을 위해 일반속성으로 포함하는 방법

5. 응용시스템 오작동을 위한 칼럼 추가 : 업무적으로는 의미가 없지만 사용자의 실수로 원래 값으로 복구하기 원하는 경우 이전 데이터를 임시적으로 중복하여 보관하는 기법

 

관계 반정규화

중복관계 추가 : 데이터를 처리하기 위한 여러 경로를 거쳐 조인이 가능하지만 이 때 발생할 수 있는 성능저하를 예방하기위해 추가적인 관계를 맺는 방법

로우 체이닝 : 로우의 길이가 너무 길어서 데이터 블록 하나에 데이터가 모두 저장되지 않고 두 개 이상의 블록에 걸쳐 하나의 로우가 저장되어 있는 형태

로우 마이그레이션 : 데이터블록에서 수정이 발생하면 수정된 데이터를 해당 데이터 블록에서 저장하지 못하고 다른 블록의 빈 공간을 찾아 저장하는 방식

 

로우 체이닝과 로우 마이그레이션이 발생하여 많은 블록에 데이터가 저장되면 DB 메모리에서 디스크 I/O가 발생할 때 많은 I/O가 발생하여 성능저하 발생

트랜잭션을 분석하여 적절하게 1:1관계로 분리함으로써 성능향상이 가능하도록 해야 한다

 

PK에 의해 테이블을 분할하는 방법(파티셔닝)

1. RANGE PARTITION : 대상 테이블이 날짜 또는 숫자값으로 분리가 가능하고 각 영역별로 트랜잭션이 분리되는 경우

2. LIST PARTITION : 지점, 사업소 등 핵심적인 코드값으로 PK가 구성되어 있고 대량의 데이터가 있는 테이블의 경우

3. HASH PARTITION : 지정된 HASH 조건에 따라 해시 알고리즘이 적용되어 테이블이 분리

 

테이블에 대한 수평/수직분할의 절차

1. 데이터 모델링을 완성한다

2. DB 용량산정을 한다

3. 대량 데이터가 처리되는 테이블에 대해 트랜잭션 처리 패턴을 분석한다

4. 칼럼 단위로 집중화된 처리가 발생하는지. 로우 단위로 집중화된 처리가 발생하는지 분석하여 집중화된 단위로 테이블을 분리 검토

 

슈퍼/서브 타입 모델 : 업무를 구성하는 데이터의 특징을 공통과 차이점의 특징을 고려하여 효과적 표현

공통의 부분을 슈퍼타입으로 공통으로부터 상속받아 다른 엔티티와 차이가 있는 속성에 대해서는 별도의 서브엔티티로 구분

 

슈퍼/서브 타입 데이터 모델의 변환

슈퍼/서브 타입에 대한 변환을 잘못하면 성능이 저하되는 이유 : 트랜잭션의 특성을 고려하지 않고 테이블을 설계 했기 때문

1. 트랜잭션은 항상 일괄로 처리하는데 테이블은 개별로 유지되어 Union 연산에 의해 성능이 저하될 수 있다

2. 트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합되어 있어 불필요하게 많은 양의 데이터가 집약되어 있어 성능이 저하되는 경우가 있다

3. 트랜잭션은 항상 슈퍼+서브 타입을 공통으로 처리하는데 개별로 유지되어 있거나 하나의 테이블로 집약되어 있어 성능이 저하되는 경우가 있다

 

슈퍼/서브 타입 데이터 모델의 변환기술

1. 개별로 발생되는 트랜잭션에 대해서는 개별 테이블로 구성

2. 슈퍼타입+서브타입에 대해 발생되는 트랜잭션에 대해서는 슈퍼+서브타입 테이블로 구성

3. 전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성

 

인덱스 특성을 고려한 PK/FK DB 성능향상

인덱스의 특징을 여러 개의 속성이 하나의 인덱스로 구성되어 있을 때 앞쪽에 위치한 속성의 값이 비교자로 있어야 좋은 효율을 나타낸다.

앞쪽에 위치한 속성의 값이 가급적 '=' 아니면 최소한 범위 'BETWEEN' '<>'가 들어와야 효율적이다

물리적인 테이블에 FK 제약 걸었을 때는 반드시 FK인덱스를 생성하도록 하고

FK제약이 걸리지 않았을 경우에는 FK인데긋를 생성하는 것을 기본정책으로 하되

발생되는 트랜잭션에 의해 거의 활동되지 않았을 때에만 FK인덱스를 지우는 방법으로 하는 것이 적절한 방법

-> FK에도 인덱스를 생성할 필요가 있다

 

 

https://blog.naver.com/yeeun0147/223207612092

 

SQLD SQL개발자 50회 시험 후기 | 독학, 공부방법, 요약본 pdf, 기출문제 pdf, 노랭이, 유선배, 유튜브

안녕하세요 예은입니다! 이번 여름방학 마지막 3번째 자격증 그 대상은 바로 어제인 9월 9일에 본 SQLD...

blog.naver.com