[SQLD] 1-6. 데이터베이스 구조와 성능
2021. 10. 27. 17:34ㆍCertificate`/SQLD
슈퍼/서브 타입 모델
- 업무를 구성하는 데이터의 특징을 공통점/차이점의 특징을 고려해서 표현 가능
- 공통 속성 = Super Type / 개별 속성 = Sub Type
- 논리적 데이터 모델에서 이용되는 형태 + 분석 단계에서 사용
슈퍼/서브 타입 데이터 모델의 변환
- 슈퍼/서브타입 변환에 대한 성능 저하 이유
- 트랜잭션의 특성을 고려하지 않고 테이블을 설계하기 때문
1) 트랜잭션은 항상 일괄 처리 But 테이블은 개별로 유지되어 Union 연산에 의한 성능 저하
2) 트랜잭션은 항상 서브타입 개별로 처리 But 테이블이 하나로 통합되어 있어서 불필요하게 많은 데이터를 집약
3) 트랜잭션은 항상 슈퍼+서브 타입을 공통으로 처리 But 개별로 유지 or 하나의 테이블로 집약
변환 타입
1:1 타입 | 슈퍼+서브 타입 | All In One 타입 | |
특징 | 개별 테이블 유지 | 슈퍼+서브타입 테이블 | 하나의 테이블 |
확장성 | 좋음 | 보통 | 나쁨 |
조인성능 | 나쁨 | 나쁨 | 좋음 |
I/O량 성능 | 좋음 | 좋음 | 나쁨 |
관리용이성 | 나쁨 | 나쁨 | 좋음(1개) |
트랜잭션 유형에 따른 선택 방법 | 개별 테이블로 접근이 많은 경우 |
슈퍼+서브 형식으로 데이터를 처리하는 경우 |
전체를 일괄적으로 처리하는 경우 |
인덱스 특성을 고려한 PK/FK DB 성능향상
인덱스
- 추가적인 쓰기 작업, 저장 공간을 활용해서 DB 테이블의 검색 속도를 향상시키기 위한 자료구조
PK(Primary Key)
- 해당 테이블의 데이터를 접근할 가장 빈번하게 사용되는 유일한 인덱스(Unique Index)를 모두 자동 생성
- PK의 순서에 따라 성능이 향상되고 저하될 수 있다
※ PK의 순서를 인덱스 특징에 맞지 않게 고려 후 생성
→ 테이블에 접근하는 트랜잭션 특징에 효율적이지 않은 인덱스가 생성되어 있기 때문에 인덱스 범위를 넓게 이용 or Full Scan을 유발
FK(Foreign Key)
- 물리적 테이블에 FK 제약을 걸었을 때는 반드시 FK인덱스를 생성
- ex) CREATE INDEX 수강신청_FK01 ON 수강신청(학사기준번호);
- FK제약이 걸리지 않았을 경우
- FK인덱스를 생성하는 것을 기본정책
- 발생되는 트랜잭션에 의해 거의 활용되지 않았을 때에만 FK 인덱스 제거