ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MYSQL 데이터타입 정리 및 선택
    MYSQL 2023. 1. 18. 22:22

    CHAR과 VARCHAR

    MYSQL에서 사용하는 대표적인 문자열 데이터타입입니다.  

    CHAR란?

    CHAR(숫자)

    고정길이 문자열
    숫자 = 저장할 수 있는 문자열의 최대길이
    숫자의 범위 = 0~255
    설정크기보다 작은 길이의 문자열이 입력되면, 나머지 공간을 공백으로 채워 길이를 숫자로 만든다.

    VARCHAR란?

    VARCHAR(숫자)
    가변길이 문자열
    숫자 = 저장할 수 있는 문자열의 최대길이
    숫자의 범위 = 0~65,535
    실제 입력된 문자열의 길이만큼만 저장하고 사용한다.


    BLOB과 TEXT

    BLOB = Binary Large Object.

    다양한 크기 바이너리 데이터 저장
    저장할 수 있는 데이터 최대 크기 따라 나뉨

    • TINYBLOB = 최대 255byte
    • BLOB = 최대 65535byte
    • MEDIUMBLOB = 최대 16777215byte
    • LONGBLOB = 최대 4294967295byte

    TEXT = VARCHAR와 비슷하지만, 기본 값을 가질 수 없음.

    BLOB과 비슷하지만 문자열의 대소문자 구분함.

    저장할수 있는 데이터 최대 크기 따라 나뉨

    • TINYTEXT = 최대 255byte
    • TEXT = 최대 65535byte
    • MEDIUMTEXT = 최대 16777215byte
    • LONGTEXT = 최대 4294967295byte

    ENUM

    미리 정의한 집합 안의 요소 중 하나만을 저장할 수 있는 타입(단일 선택 가능)
    가독성 증가, 특정 숫자에 문자열로 의미를 부여할 수 있다.
    ENUM목록 집합은 최대 65,535개의 ENUM데이터를 포함할 수 있다.
    ENUM데이터는 내부적으로 정수로 변환되어 인식된다.
    ENUM('데이터값1','데이터값2',...)
    ENUM 목록 집합의 각 데이터는 내부적으로 0부터 시작하여 1씩 증가하며 각각 대응된다.
    단, 0은 빈 문자열('')과 대응되며 1부터 집합의 첫 번째 요소와 대응된다.
    단점 = 컬럼에 저장되는 문자열의 값이 새롭게 추가되는 경우 테이블 구조를 변경해야 한다.


    데이터 타입 선택 방법

    적합한 데이터타입을 고르는 것은 좋은 성능을 얻는데 필수적이다.

    • 타입은 작게!
      작은 데이터타입일수록 디스크나 메모리, CPU 캐시에 더 적은 공간을 사용하기 때문에 더 빠르고, 덜 소비한다.
      하지만 스키마에서 데이터 타입의 범위를 늘리는 작업은 어렵기 때문에 잘 생각해서 선정하도록한다.
    • 타입은 단순하게!
      간단한 데이터 타입을 처리할수록 CPU 사이클로 덜 소비한다.
      ex) 문자 비교는 Character set과 Collation으로 인해 복잡해지므로 문자 비교보다는 정수 비교가 비용이 더 저렴하다.
      -> 날짜, 시간은 문자열로 저장하지말고 MySQL의 내장형식에 저장해야 하며 IP주소는 정수를 이용해 저장할 것
      -> IP 주소를 사용할 수 있는 함수 = INET_ATON, INET_NTOA
    • 가능하면 NULL 금지!
      컬럼은 되도록 NOT NULL로 정의.
      NULL허용 컬럼은 저장 공간도 더 많이 사용하고 NULL 허용 컬럼을 인덱싱할 땐 항목마다 한 바이트씩 더 들어간다.
      NULL대신 0이나 특수한 어떤 값, 빈 문자열 등을 사용하는 걸 고려할 것

    참고 : https://velog.io/@chosj1526/MySQL%EC%9D%98-%EB%AC%B8%EC%9E%90%EC%97%B4-%ED%83%80%EC%9E%85-BINARY-data

    'MYSQL' 카테고리의 다른 글

    MYSQL 테이블 만들기 (CREATE TABLE) 및 PRIMARY KEY 설정  (0) 2023.01.18
Designed by Tistory.