본문 바로가기

데이터베이스

물리적 모델링

728x90
반응형
SMALL

데이터베이스 타입 정리

  • Numberic Types
    • 숫자형 타입으로 정수, 실수형으로 나타낼 수 있음
    • TINYINT : -128 ~ 127까지의 작은 범위 정수들을 저장할 때 사용
    • SMALLINT : -32768 ~ 32767까지의 범위의 정수를 저장할 때 사용
    • MEDIUMINT : -8388608 ~ 8388607 까지의 정수
    • INT : -2147483648 ~ 2147483647 까지의 정수
    • BIGINT : : -9223372036854775808 ~ 9223372036854775807 까지의 정수
    • 실수형 타입
    • FLOAT
    • DOUBLE
  • Date, Timestamp
    • DATE : 날짜를 저장하는 타입 '2023-08-23' 의 연도, 월 일 순으로 값을 저장
    • DATETIME : 날짜와 시간을 저장하는 데이터 타입
    • TIMESTAMP : 란짜와 시간을 저장하는 타입이지만 TIMPSTAMP에서는 타임존 정보도 함께 저장된다. 미국과 한국의 시간대가 다르듯이 TIMESTAMP도 이 값을 다른 시간대로 바꾸면 값이 바뀌게 된다.
  • String Type
    • CHAR : 문자열을 나타내며 저장 0~ 255까지
    • VARCHAR : 문자열의 최대길이를 지정할 수 있는 문자열, 저장 용량을 지정하고 설정된 길이보다만 값이 작으면 그 안에 저장된 값의 용량만을 저장한다.
    • TEXT : 문자옇을 저장하는 타입으로 길이가 너무 긴 문자열에 대해서는 TEXT를 사용

 

선형 탐색과 이진 탐색

  - 배열안에 원하는 조건의 데이터를 찾을 때, 처음부터 맨 마지막까지 하나하나 확인해 보는 것을 선형 탐색이라고 한다. (O(n))

  - 만약 배열안에 있는 값들을 오름차순으로 정리하고 배열의 중간에 있는 값과 확인해보고 크면 오른쪽으로 작으면 왼쪽으로 이동하는 걸 이진탐색이라고 한다. (Olg(n))

 

인덱스

 - 데이터가 정렬 되어있으면 원하는 데이터를 더 빠르게 찾을 수 있다는 원리(이진탐색) 을 데이터베이스에 적용한 개념

  • Clustered

 - 데이터베이스에 저장되어있는 데이터 자체를 특정 순서대로 저장하는 인덱스

 - 순서대로 저장이 되어있으니 조회 속도가 굉장히 빠르지만 인덱싱은 하나밖에 만들 수 없음

  • Non-clustered

 - 데이터베이스의 다른 곳에 데이터를 저장하고 각 로우에 대해서 저장된 주소값을 사용하게 됨

 - 제약이 없기 때문에 어느 column 이나 사용할 수 있음

 - Cluster보다는 느림

 

인덱스는 조회는 빠르게할 수 있지만 삽입, 업데이트, 삭제는 오히려 더 느리게 만든다.

따라서, 인덱스를 추가하는데 있어서 삽입, 업데이트, 삭제가 잘 이루어지지 않는 곳에 만든다.

 

기본 원칙

  • 모든 PK에 대해서 인덱스를 만들어준다.
  • 모든 FK에 대해서 인덱스를 만들어 준다.
  • 특정 쿼리가 너무 느려지거나 느려지는 것이 확실 한 경우 조회되는 Column에 대해서 인덱스를 만들어 준다.
728x90
반응형
LIST

'데이터베이스' 카테고리의 다른 글

정규화  (0) 2023.08.22
논리적 모델링  (0) 2023.08.21
데이터 모델링의 개념  (0) 2023.08.21