DB 모델링의 순서

이대엽·2022년 9월 23일
post-thumbnail

오늘 배운것

학생 - 회원 모델링
Datagrip Oracle rownum , index 실행계획 정리

예시) 학생과 시험으로 DB모델링을 한다면?

학교에서 배우는 모델링

bad modeling
테이블을 먼저 만든다.

학생 테이블, 시험테이블, 시험문제 테이블, ...

실무에서 사용하는 모델링(?)

데이터를 먼저 만든다.

예시 데이터
수학시험 | 문제번호 | 보기 ...

시험의 종류 : 수학, 국어, 과학 .. -> 테이블로 만들어야 한다.
각 시험의 문제번호 -> 테이블로 만들어야 한다.
문제의 보기 -> 테이블로 만들어야 한다. ( PK는 딱히 없을듯 해보인다 )

실행계획

사용자가 SQL을 실행하여 데이터를 추출하려고 할 때 옵티마이저가 수립하는 작업절차를 뜻한다.

토이프로젝트 정도의 레벨에서는 관리,조작 해야할 데이터의 개수가 100만건 정도는 안되다 보니 쿼리의 실행속도의 차이를 못느끼지만,
엔터프라이즈(기업) 급 DB업무 에서는 쿼리문 자체가 수 십 줄도 넘어 갈 뿐더러 실행속도 또한 어마어마하게 느리다.

하지만

인덱스를 활용하여 실행계획을 바꿔준다면 실행속도를 Dynamic / Dramatic 하게 줄여줄 수 있다.
이를 SQL 튜닝 이라고 부른다.

JetBrain 의 Datagrip || Maria DB의 쿼리 편집기 HiediSQL 에서
실행되는 쿼리문의 실행계획을 볼 수 있다.

ORACLE 의 실행계획

실행계획에는 크게 3가지의 SCAN이 있습니다.
1. FULL TABLE SCAN
FULL 이라는 단어를 만나시면 잘못되었구나~ 하고 튜닝을 시작하시면 됩니다.
대부분 FULL SCAN의 계획은 수행속도가 느립니다.

  1. ROWID SCAN
    ROWID를 기준으로 데이터를 추출합니다.
    조건절에 ROWID를 직접 명시할 경우 볼 수 있는 실행계획입니다.

  2. INDEX SCAN
    인덱스를 활용하여 원하는 데이터를 추출하는 방식입니다.

MYSQL의 실행계획 ( 아직 내용 부족 ㅠㅠ)

인덱스 사용 시 -> type : range

FULL SCAN 시 -> type : ALL

profile
은갈치쉐이크

0개의 댓글