SQL 자격 검정 실전 문제
데이터 모델과 성능
31. 성능 데이터모델링에 대한 설명
-성능데이터모델링 : 데이터베이스 성능 향상을 목적으로 설계단계의 데이터 모델링 때부터
성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것
-데이터 모델의 구조도 변경하면서 어떠한 구조가 해당 사이트에 성능상 가장 적절한 구조인지 검토
-데이터의 증가가 빠를수록 성능저하에 따른 성느개선비용은 증가한다
-데이터모델은 성능을 튜닝하며서 변경이 될 수 있는 특징이 있다
-분석/설계 단계에서 성능을 고려한 데이터모델링을 수행할 경우 성능저하에 따른 Rework비용을 최소화 할 수 있는
기회를 가지게 된다
32/33. 데이터 모델링의 순서
1. 데이터모델링을 할 때 정규화를 정확하게 수행한다
2. 데이터베이스 용량산정을 수행한다
3. 데이버베이스에 발생되는 트랜잭션의 유형을 파악한다
4. 용량과 트랜잭션의 유형에 따라 반정규화를 수행한다
5. 이력모델의 조정, PK/FK조정, 슈퍼/서브타입 조정등을 수행한다
6. 성능관점에서 데이터모델을 검증한다
34. 성능데이터 모델링을 할 때 고려사항
-데이터 모델링의 정규화는 기본적으로 중복된 데이터를 제거함으로써 조회성능을 향상시킬 수 있다
-용량산정은 전체적인 데이터베이스에 발생되는 트랜잭션의 유형과 양을 분석하는 자료가 되므로
성능데이터 모델링을 할 때 중요한 작업이 될 수 있다
-물리적인 데이터 모델링을 할 때 PK/FK의 칼럼의 순서조정, FK인덱스 생성 등은 성능 향상을 위한 데이터 모델링
작업에 중요한 요소가 된다
-이력데이터는 시간에 따라 반복적으로 발생이 되기 때문에 대량 데이터일 가능성이 높아 특별히 성능을 고려하려
칼럼 등을 추가하도록 설계해야한다
35. 정규화
- 1차 정규화 : 한 속성에 여러 개의 속성값을 갖거나 같은 유형의 속성이 여러 개인 경우 해당 속성을 분리
- 2차 정규화 : 주삭별자(PK)에 완전 함수 종속되지 않은 속성을 분리
- 3차 정규화 : 일반 속성끼리 함수 종속이 발생한 속성을 분리
- 보이스-코드 정규화 : 결정자 안에 함수 종속을 가진 주식별자 속성을 분리
36. 엔터티들의 관계
-매각시간, 매각장소 속성은 구 대의 주식별자 속성 중 매각일자에만 종속되기 때문에 2차 정규화 대상
-매각기일 엔터티는 일자별매각물건의 주식별자 중 일부로부터 독립했기 때문에 매각기일과 일자별매각물건은
1:M 관계로 연결
37. 동일한 유형의 속성이 칼럼단위로 반복되는 경우에 나타날 수 있는 현상
-칼럼에 의해 반복적인 속성값을 갖는 형태는 속성의 원자성을 위배한 제1차 정규화의 대상이 된다.
-유형기능분류코드 각각에 대하여 개별로 INDEX를 모두 생성할 경우 입력, 수정, 삭제 때 성능이 저하되므로
제1차 정규화를 수행한 후 인덱스를 적용
38. 동일한 유형의 속성이 칼럼단위로 반복되는 경우
-컬럼 단위에서 중복된 경우도 1차 정규화의 대상.
-이에 대한 분리는 1:M의 관계로 두 개의 엔터티로 분리
39. 엔터티에 대한 정규형과 정규화의 대상
-중복속성에 대한 분리가 1차 정규화의 대상이 되며, 로우단위의 중복도 1차정규화의 대상이 되지만
컬럼 단위로 중복이 되는 경우도 1차 정규화의 대상이다
-PK에 대해 반복이 되는 그룹이 존재하지 않으므로 1차 정규형
-부분 함수종속의 규착을 가지고 있으므로 2차 정규형이라고 할 수 없음. 2차정규화의 대상이 되는 엔터티.
40. 데이터 모델에 대한 반정규화
-반정규화는 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해
중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법
-반정규화는 데이터를 중복하여 성능을 향상시키기 위한 기법
-넓은 의미의 반정규화는 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 의미
-데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터 중복하여 반정규화를 적용하는 이유는
데이터를 조회할 때 디스크I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가
예상되거나 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행
- 반정규화 정보에 대한 재현의 적시성으로 판단한다. 예를 들어, 빌링의 잔액은 다수 테이블에 대한 다량의 조인이
불가피하므로 데이터 제공의 적시성 확보를 위한 필수 반정규화 대상정보이다
(반정규화를 고려할 때, 주된 판단 요소 중 하나는 "재현의 적시성"입니다.
이는 특정 정보를 검색하거나 조작할 때 필요한 데이터를 효율적으로 가져올 수 있는지에 대한 고려사항입니다.)
- 다량 데이터 탐색의 경우 인덱스가 아닌 파티션 및 데이터 클러스터링 등의 다양한 물리 저장 기법을 활용하여
성능개선을 유도.
- 하나의 결과셋을 추출하기 위해 다량의 데이터를 탐색하는 처리가 반복적으로 빈번하게 발생한다면
이때는 반정규화를 고려한다
- 이전 또는 이후 위치의 레코드에 대한 탐색은 window function으로 접근 가능하다
- 집계 테이블 이외에도 다양한 유형(다수 테이블의 키 연결 테이블 등)에 대하여 반정규화 테이블 적용이
필요할 수 있다
41. 하나의 테이블의 전체 칼럼 중 자주 이용하는 집중화된 칼럼들이 있을 때 디스크I/O를 줄이기 위해
해당 칼럼들을 별도로 모아놓는 반정규화 기법 -> 테이블 추가 - 부분테이블 추가
-반정규화 기법은 테이블, 속성, 관계에 대해서 반정규화를 적용
42. 칼럼에 대한 반정규화
-중복칼럼을 추가 -> 조인감소를 위해 여러 테이블에 동일한 칼럼을 갖도록 한다
-파생칼럼을 추가 -> 조회 성능을 우수하게 하기 위해 미리 계산된 칼럼을 갖도록 한다
-이력테이블에 기능 칼럼을 추가 -> 최신값을 처리하는 이력의 특성을 고려하여 기능성 칼럼을 추가한다
-(FK에 대한 속성 추가는 반정규화 기법이라기 보다는 데이터모델링에서 관계를 연결할 때 나타나는 자연스러운 현상)
반정규화 절차
1. 반정규화 대상조사
-범위처리빈도수 조사, 대량의 범위 처리 조사, 통계성 프로세스 조사, 테이블 조인 개수
2. 다른 방법유도 검토
-뷰(VIEW) 테이블, 클러스터링 적용, 인덱스의 조정, 응용애플리케이션
3. 반정규화 적용
-테이블의 반정규화, 속성의 반정규화, 관계의 반정규화
43. 주문, 주문목록, 제품에 대한 데이터모델과 이를 이용하여 데이터를 조회하는 SQL문에서 조회를
빠르게 수행하기 위한 반정규화 방법
-주문 엔터티에 단가를 합한 계산된 칼럼을 추가하도록 한다.
44. 데이터모델에 대한 설명
-최근에 변경된 값만을 조회할 경우 과도한 조인으로 인해 성능이 저하되어 나타나게 된다.
45. 칼럼수가 많은 테이블에 대한 설명
-로우체이닝이 발생할 정도로 한 테이블에 많은 컬럼들이 존재할 경우 조회성능저하가 발생할 수 있다.
트랜잭션이 접근하는 칼럼유형을 분석하여 1:1로 테이블을 분리하면 디스크 I/O가 줄어들어
조회 성능을 향상 시킬 수 있다
-한 테이블에 많은 칼럼들이 존재할 경우 데이터가 물리적으로 저장되는 디스크 상에 넓게 분포할 가능성이 커지게
되어 디스크 I/O가 대량으로 발생할 수 있고, 이로 인해 성능이 저하될 수 있음.
따라서 트랜잭션이 접근하는 칼럼유형을 분석해서 자주 접근하는 칼럼들과 상대적으로 접근 빈도가 낮은 칼럼들을
구분하여 1:1로 테이블을 분리하면 디스크 1/O가 줄어들어 성능을 향상 시킬 수 있다.
테이블 내에서 칼럼의 위치를 조정하는 것은 데이터 주로 채워지는 칼럼을 앞 쪽에 위치시키고,
데이터 가 채워지지 않고 주로 NULL 상태로 존재하는 칼럼들을 뒤쪽에 모아둠으로써 로우의 길이를 어느 정도
감소시킬 수 있으나, NULL 상태이던 칼럼에 나중에 데이터가 채워지게 될 경우 더 많은 로우 체인이 발생할 수도
있기 때문에 바람직한 해결책이라고 보기에 부족하며, 무엇보다도 데이터가 채워 지지 않고 NULL 상태로 존재하게
되는 칼럼들이 많이 나타나는 경우는, 너무 많은 엔터티들에 무리하 게 동질성을 부여하여 통합을 수행했거나,
예측하기 어려운 미래 시점을 겨냥하여 과도하게 의욕적으 로 속성을 확장한 경우 등에서 주로 나타나기 때문에,
자주 사용되는 칼럼들이나 현시점에서 주로 사용되는 칼럼들을 한데 모으고, 사용빈도가 낮은 칼럼들이나 미래 시점에 사용될 것으로 예상되는 나머지 칼럼들을 한데 모아 별도의 1:1 관계 엔터티로 분리하는 등의 데이터모델 설계 수정을 고려해 보는 것이 좋다
46. 데이터 액세스 성능을 향상시키기 위해 적용하는 방법 -> 파티셔닝
-하나의 테이블에 많은 양의 데이터가 저장되면 인덱스를 추가하고 테이블을 몇 개로 쪼개도
성능이 저하되는 경우가 있다. 이때 논리적 으로는 하나의 테이블이지만 물리적으로는 여러 개의 테이블로
분리 하여 데이터 액세스 성능도 향상시키고,
데이터 관리방법도 개선할 수 있도록 테이블에 적용하는 기법을 파티셔닝 이라고 한다.
47. 슈퍼/서브 타입 데이터 모델의 변환기술
-개별로 발생되는 트랜잭션에 대해서는 개별테이블로 구성
-슈퍼타입 + 서브타입에 대해 발생되는 트랜잭션에 대해서는 슈퍼타입 + 서브타입 테이블로 구성
-전체를 하나로 묶어 트랜잭션이 발생할 때는 하나의 테이블로 구성
-개별 테이블을 모두 조회하는 트랜잭션이 대부분이라는 가정이 있으므로 UNION/UNIO ALL할 경우
개별조회에 따른 시간소요와 이것을 조합하는 성능저하가 발생된다.
따라서 하나의 테이블로 통합하도록 하고 대신 PK체계나 일반속성에 각 사건을 구분할 수 있도록 구분자를 부여한다
즉, 긴급사건, 특수사건, 일반사건을 하나의 테이블로 통합하고 PK를 사건 분류코드+사건번호로 조회하여
구성하도록한다
48. 논리데이터모델의 슈퍼타입과 서브타입 데이터모델을 물리적인 테이블 형식으로 변환할 때 설명
-트랜잭션은 항상 전체를 대상으로 일괄 처리하는데 테이블은 서브타입 별로 개별 유지하는 것으로 변환하면
UNION 연산에 의해 성능이 저하될 수 있다
-트랜잭션은 항상 서브타입 개별로 처리하는데 테이블은 하나로 통합하여 변환하면 불필요하게 많은 양의 데이터가
집적되어 있어 성능이 저하될 수 있다
-트랜잭션은 항상 슈퍼+서브 타입을 함께 처리하는데 개별로 유지 하면 조인에 의해 성능이 저하될 수 있다
-트랜잭션은 항상 전체를 통합하여 분석 처리하는데 슈퍼-서브타입이 하나의 테이블로 통합되어 있으면
하나의 테이블에 집적된 데이터만 읽어 처리할 수 있기 때문에 다른 형식에 비해 성능이 우수하다 (조인감소)
49. 테이블에서 데이터를 조회할 때 사용되는 SQL패턴
-인덱스는 값의 범위에 따라 일정하게 정렬이 되어 있으므로 상수값으로 = 조건으로 조회되는 칼럼이
가장 앞으로 나오고 범위조회 하는 유형의 칼럼이 그 다음에 오도록 하는 것이 인덱스 액세스 범위를
좁힐 수 있는 가장 좋은 방법이 된다
50. 엔터티를 매우 빈번하게 참조하는 SQL 성능
-'=' 로 들어온 조건에 해당하는 칼럼이 인덱스의 가장 앞쪽에 위치할 때 인덱스의 이용 효율성이 가장 높다고 할 수 있다.
51. 데이터모델에 표현된 FK에 대한 설명
-엔터티 간에 논리적 관계가 있을 경우 즉,
엔터티 간에 관계(Relationship)을 정의하여 관련 엔터티 상호간에 업무적인 연관성이 있음을 표현한 경우에는,
이 데이터들이 업무적으로 밀접하게 연결되어 상호간에 조인이 자주 발생한다는 것을 의미하는 것이기 때문에,
데이터베이스 상에서 DBMS가 제공 하는 FK Constraints를 생성했는지 여부와 상관없이 조인 성능을 향상시키기
위한 인덱스를 생성해주 는 것이 좋다.
-데이터베이스에 생성하는 FK Constraints는 데이터 모델 상에 표현된 논리적 관계에 따라 관련 인스턴스 간에
일관성을 보장하기 위해 설계된 제약조건을 구현할 수 있도록 DBMS가 제공해주는 하나의
'지원 기능'으로 이해될 수 있다
52. 데이터가 여러 지역애 분산되어 있지만 하나의 데이터베이스처럼 사용하기를 원하는 분산데이터베이스
환경에서 데이터베이스 분산설계를 적용하여 효율성을 증대 시키기 위한 방법
-공통코드, 기준정보 등 마스터 데이터는 분산데이터베이스에 복제분산을 적용한다
-거의 실시간 업무적인 특성을 가지고 있을 때 분산 데이터베이스를 사용하여 구성할 수 있다
-백업 사이트를 구성할 때 간단하게 분산기능을 적용하여 구성할 수 있다
-GSI는 통합된 한 개의 인스턴스 즉 통합 데이터베이스 구조를 의미하므로, 분산데이터와는 대치되는 개념이다.
분산데이터베이스 장단점
장점
• 지역 자치성, 점증적 시스템 용량 확장
• 신뢰성과 가용성
• 효용성과 융통성
• 빠른 응답 속도와 통신비용 절감
• 데이터의 가용성과 신뢰성 증가
• 시스템 규모의 적절한 조절
• 각 지역 사용자의 요구 수용 증대
단점
• 소프트웨어 개발 비용
• 오류의 잠재성 증대
• 처리 비용의 증대
• 설계, 관리의 복잡성과 비용
• 불규칙한 응답 속도
• 통제의 어려움
• 데이터 무결성에 대한 위협
'SQL > SQLD 준비' 카테고리의 다른 글
[표준조인] (0) | 2024.01.02 |
---|---|
[엔터티 식별자] (0) | 2023.11.21 |
[관계 (Relationship)] (0) | 2023.11.21 |
[속성 (Attribute)] (0) | 2023.11.21 |
[엔터티 (Entity)] (0) | 2023.11.21 |