데이터입출력구현
Delete Constraint
- 참조된 기본키의 값이 삭제될 경우의 처리 내용 정의
- Cascade
- 참조한 테이블이 있는 외부키가 일치하는 모든 Row가 삭제
- Restricted
- 참조한 테이블에 있는 외부키에 없는 것만 삭제 가능
- Nullify
- 참조한 테이블에 정의된 외부키가 일치하는 것을 Null로 수정
Update Constraint
- 참조된 기본키의 값이 수정될 경우의 처리 내용 정의
- Cascade
- 참조한 테이블에 있는 외부키와 일치하는 모든 Row가 수정
- Restricted
- 참조한 테이블에 있는 외부키에 없는 것만 수정가능
- Nullify
- 참조한 테이블에 정의된 외부키와 일치하는 것을 Null로 수정
인덱스 설계
1. 인덱스 적용 기준
- 인덱스 칼럼의 분포가 10~15% 이내인 경우
분포도 = (1/칼럼값의종류) * 100 = (칼럼값의 평균 Row수/테이블의 총Row수) * 100
- 분포도가 범위 이상이더라도 부분처리를 목적으로 하는 경우
- 입출력 장표 등에서 조회 및 출력 조건으로 사용되는 칼럼
- 인덱스가 자동 생성되는 기본키와 Unique키의 제약조건을 사용할 경우
2. 인덱스 칼럼 선정
- 분포도가 좋은 칼럼은 단독적으로 생성하여 활용도 향상
- 자주 조합되어 사용되는 칼럼은 결합 인덱스로 생성하여 활용
- 결합 인덱스는 구성되는 칼럼 순서 선정에 유의
- 가능한 수정이 빈번하지 않은 칼럼 선정
3. 설계시 고려사항
- 새로 추가되는 인덱스가 기존 액세스 경로에 영향을 미칠지 않는지 고려
- 지나치게 많은 인덱스는 오버헤드로 작용하므로 유의
- 인덱스는 추가적인 저장공간이 필요함으로 고려
- 넓은 범위를 인덱스 처리 시 오히려 전체 처리보다 많은 오버헤드를 발생시킬 수 있음
뷰 설계
1. 뷰 테이블 개념
- 가상 테이블을 구성하는 데이터베이스 오브젝트로 별도의 저장 공간은 없지만 뷰를 통해 SELECT, DELETE, UPDATE를 할 수 있음
2. 뷰 테이블 생성
1 | CREATE OR REPLACE VIEW EMP_VIEW10 |
- REPLACE : 뷰가 이미 존재하는 경우 재생성
- FORCE : 기본 테이블의 존 여부에 관계 없이 뷰 생성
- NOFORCE : 기본 테이블이 존재할 때만 뷰 생성
- WITH CHECK OPTION : Sub-Query 내의 조건을 만족하는 행만 변경
- WITH READ ONLY : 조회만 가능하게 제약
3. 뷰 설계시 고려사항
- 최종적으로는 테이블을 액세스하는 것으로 사용에 따라 수행 속도에 문제 발생 가능성
- 뷰 내의 SELECT 문의 조건은 가능한 한 최적의 액세스 경로를 사용할 수 있도록 함
- 그럴 수 없다면 뷰를 사용한 SQL의 WHERE 절에서는 반드시 양호한 액세스 경로가 되도록 해야 함
클러스터 설계
1. 클러스터 개념
- 클러스터 키 값을 기준으로 같은 값들끼리 레코드가 한 블록에 모이는 저장 구조
2. 클러스터 적용 기준
- 분포도가 넓을수록 오히려 유리한 기법
- 액세스 기법이 아니라 액세스 효율 향상을 위한 물리적 저장 방법
- 분포도가 넓은 테이블의 클러스터링은 저장 공간의 절약 가능
- 다중 블록 이상의 테이블에 적용
- 대량의 범위를 자주 액세스하는 경우 적용
- 인덱스를 사용한 처리 부담이 되는 넓은 분포도에 활용
- 여러 개의 테이블이 번번히 조인을 일으킬 때 활용
- 반복 칼럼이 정규화에 의해 어쩔 수 없이 분할된 경우 활용
3. 클러스터 설계시 고려사항
- 검색 효율은 높여 주나 입력, 수정, 삭제 시는 부하가 증가함 고려
- Union, Distinct, Order by, Group by 빈번한 칼럼이면 고려
- 수정이 자주 발생하지 않는 칼럼은 고려 대상
파티션 설계
1. 파티션 개념
- 데이터베이스를 여러 부분으로 분할 하는 것
2. 파티션 종류
- 범위 분할 : 지정한 열의 값을 기준으로 분할
- 해시 분할 : 해시 함수에 따라 데이터를 분할
- 조합 분할 : 범위 분할에 의해 데이터를 분할한 다음 해시 함수를 적용하여 다시 분할 하는 것
3. 파티션 장점
- 데이터 액세스 범위를 줄여 성능 향상
- 전체 데이터의 훼손 가능성이 감소 및 데이터 가용성 향상
- 각 분할 영역을 독립적으로 백업하고 복구 가능
- 디스크 경합에 대한 감소
4. 파티셔닝 순서
- 파티션의 종류 결정
- 파티션 키의 선정
- 파티션 수의 결정