본문 바로가기
SQLD

1과목 PART2. 데이터 모델과 성능 (문제)

by 새싹감자 2022. 9. 28.

31. 성능 데이터모델링 설명

- 문제발생 시점의 SQL 보다는 데이터모델을 대상으로 튜닝

- 데이터 증가가 빠를수록 성능개선비용 증가

- 데이터모델은 성능 튜닝하면서 변경될 수 있음

- 분석/설계 단계에서 성능 고려하여 모델링할 경우 성능저하에 따른 rework 비용 최소화

 

32. 성능 데이터모델링 순서

1. 데이터모델링 할때 정규화 정확히 수행

2. DB 용량산정

3. 트랜잭션 유형 파악

4. 유형에 따라 반정규화 수행

5. 이력모델, PK/FK, 슈퍼타입/서브타입 조정

 

33. 성능 데이터모델링 순서

정용트반조

 

34. 성능 데이터모델링 고려사항

- 데이터모델링 정규화는 기본적으로 중복 제거를 통해 조회성능 향상

- 용량산정은 DB에 발생되는 트랜잭션의 유형과 양을 분석하는 자료로 중요

- 물리적 데이터 모델링할 때 PK/FK 칼럼 순서 조정, FK 인덱스 생성 등은 성능 향상을 위해 중요

- 이력데이터는 시간에 따라 반복 발생해 대량 데이터라서 특별히 칼럼 추가하여 성능 고려 설계

 

35. 정규화

도부이결다조

부분함수 종속제거 필요 - 2차 정규화

관서번호가 PK인 새로운 엔티티 생성하기

 

36. 정규화

매각시간, 매각장소 속성은 매각일자에만 종속되서 부분함수 종속 제거 필요 - 2차 정규화 대상

매각기일 엔티티 새로 생성, 매각기일 엔티티는 일자별매각물건의 주식별자로부터 독립해서 1:M 관계

 

37. 정규화

- 칼럼에 반복적인 속성값 - 1차 정규화 대상

 

38. 정규화

- 칼럼에 반복적인 속성값 - 1차 정규화 대상

 

39. 정규화

- 칼럼에 반복적인 속성값은 없음 - 1차 정규형

- 부분함수 종속 존재 - 2차 정규화 대상

 

40. 반정규화 고려사항

- 재현의 적시성으로 판단 - 빌링 잔액은 다수 테이블에 다량의 조인 발생 - 데이터 적시성 확보를 위해 반정규화

- 이전 또는 이후 위치의 레코드 탐색은 window function으로 가능

- 집계 테이블 외에 다양한 테이블에 반정규화 적용 필요할 수 있음

 

41. 테이블 반정규화 기법

- 디스크 I/O를 줄이기 위해 자주 이용하는 칼럼들을 별도로 모아놓는 반정규화 기법

- 테이블 추가 - 부분테이블 추가

 

42. 칼럼 반정규화 기법  

- 중복칼럼 추가 - 조인감소를 위해 여러 테이블에 동일한 칼럼 추가

- 파생칼럼 추가 - 조회성능을 우수하게 하기 위해 미리 계산된 칼럼 추가

- FK 속성 추가 - 반정규화 기법은 아니고 그냥 데이터모델링할 때 나타나는 자연스러운 현상

- 이력테이블에 기능칼럼 추가 - 최신값 처리하므로 기능성 칼럼 추가

 

 

43. 조회성능 높이는 반정규화 기법

- 조인이 많아서 단가합 빨리 안 구해지는게 문제

- 제품 엔티티에 단가합 칼럼 만드는 건 한 제품이 여러 주문에 들어가면 무용지물

- 주문목록 엔티티에 단가합 칼럼 만드는건 주문번호별로 제품번호에 따른 단가가 계속 들어가서 일관성 문제

- 최근값 여부는 단가합과 상관X

- 주문 엔티티에 단가합 칼럼 만드는게 가장 효과적인 반정규화 기법

 

 

44. 데이터모델 설명

- 공급자 테이블에 갖고 있으면 과도한 조인으로 성능 저하 발생

- 최근 변경값 반정규화하기

- 최신여부 속성 추가해서 최근변경값 빨리 찾기

- 이력테이블 설계 - 용량 커지는 단점

 

45. 칼럼수 많은 테이블

- 많은 칼럼 있으면 물리적 디스크 넓게 분포되어 저장 - 디스크 I/O 대량 발생

- 로우체이닝이 발생할 정도로 한 테이블에 많은 칼럼이 존재할 경우 조회성능저하 발생

- 칼럼 위치 조정으로 안됌

- 칼럼 유형을 분석해서 1:1테이블로 분리하여 조회성능 향상 가능

 

로우체이닝 - 칼럼이 너무 많아서 로우가 길어짐 - 두 개 이상의 블록에 걸쳐 하나의 로우 저장

 

 

46. 데이터 액세스 성능 향상 방법 - 파티셔닝

- 논리적으로 하나의 테이블이지만 물리적으로 여러 개의 테이블로 분리

- 데이터 액세스 성능 향상 - 데이터 관리방법 개선

 

 

47. 데이터 모델 및 SQL문 개선 사항

- 세 테이블을 함께 조회하는 경우가 대부분 - UNION / UNION ALL 하면 조회성능 떨어짐

- 그냥 한 테이블에 모아놓고 PK를 사건분류 + 사건번호로 구성하면 됌

 

 

48. 슈퍼타입, 서브타입 데이터 모델 변환

- 트랜잭션은 항상 전체 처리하는데 테이블은 서브타입 별로 구성하면 UNION 연산에 의해 성능 저하

- 트랜잭션은 항상 서브타입 처리하는데 테이블을 통합하여 구성하면 불필요한 데이터로 성능 저하

- 트랜잭션은 항상 슈퍼+서브 타입을 함께 처리하는데 개별로 유지하면 조인에 의해 성능 저하

- 트랜잭션은 항상 전체 처리하는데 하나로 통합되어 있으면 굳

 

49. SQL 성능

- 인덱스 값에 따라 정렬되어있음, EQUAL 조건, 범위 조건 순이여야 조회 성능 굳

 

50. SQL 성능

 

51. FK 설명

 

52. 분산 DB 설명

댓글