hmk run dev

MYSQL database type 정리 본문

mysql

MYSQL database type 정리

hmk run dev 2021. 11. 17. 09:52

 

 

CHAR & VARCHAR & TEXT

 

CHAR : 고정 길이 문자열 정보

- s는 기본 길이 1바이트, 최대 길이 Oracle 2000바이트 SQL Server 8000바이트 

- s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 할당도니 변수 값의 길이가 s보다 작을 경우에는 그 차이 길이만큼 공간으로 채워진다. (남는 공간은 공백으로 채우게 된다.)

 

VARCHAR : CHARACTER VARYING의 약자로 가변 길이 문자열 정보 ( 데이터 길이 상한치 4000 )

(Oracle은 VARCHAR2 로 표현, SQL Server는 VARCHAR로 표현)

- s는 최소 길이 1바이트, 최대 길이 Oracle 4000바이트, SQL Server 8000 바이트

- s만큼의 최대 길이를 갖지만 가변 길이로 조정이 되기 때문에 할당된 변수값의 바이트만 적용된다. 

- 공백들을 제거하지 않고 보관하며 읽어들일 때도 보존해준다.

 

TEXT : char만 fixed length type이고, text와 varchar는 variable length data type(길이 제한 없음) 입니다.

아래 예시를 바탕으로 정리해보자면, text와 varchar는

 

  • max size limit을 정할 수 있는가
    • text: 없다, 무조건 65535
    • varchar: 있다. 1 ~ 65535
  • 저장된 character 외의 현재 저장하고 있는 string의 사이즈를 저장하는데 1~2 byte를 더 쓴다
    • text: 무조건 2 byte
    • varchar: x <= 255 then, 1 byte, 256 <= x <= 65535 then, 2 byte
  • index의 일부로 쓰일 수 있는가
    • text: 없다
    • varchar: 있다
  • 기타
    • text: disk에 저장해서 느림
    • varchar: memory에 저장해서 빠름

 

결론 - 이름, 주소 등의 길이가 변할 수 있는 값 VARCHAR를 사용하고,

사번, 주민등록번호와 같이 길이가 일정한 데이터 CHAR를 사용하는게 좋다고 할 수 있다. 

 

번외 - varchar(250) 이라고 하면 영문기준 250글자 (영어 알파벳 1개당 1byte)

UTF - 8 기준 한글 영문 상관없이 250 글자 입력가능

 

MySQL 4.0 까지 byte 이후버전 글자수기준 이라고한다.


 

INT & BIGINT

 

INT : 4바이트(32비트)의 정수

BIGINT : 8바이트(64비트)의 정수

 

unsigned속성을 적용했을 때,

INT형은 0부터 4,294,967,295(약 43억)까지,

BIGINT형은 0부터 264-1(약 1844경)까지의 숫자를 저장할 수 있다.

 

id값이 43억을 넘어가는 아주 큰 DB를 사용한다면 고민없이 BIGINT형을 사용

 

IGINT형에 비해 INT형이 10%이상의 디스크용량을 절약한다고 하고있고, 아래 참고문헌에서 소개한 다수의 글들에서는 수십억개의 데이터를 가지지 않을 것이라면 속도 등 효율성의 측면에서 BIGINT형 대신 INT형을 사용하는 것을 권장

 

bigint 에서 int로 변경 하시면 Mysql 에서 사용하는 메모리 용량이 적어 지고

쿼리속도가 향상 되는 것은 사실이지만
얼마큼의 차이가 나는냐는 사용 횟수에 따라 느낌이 다를듯 합니다.
누적 생성 데이터이면 느려도 bigint 로 가시는것이 오류 예방에는 좋을듯 합니다..

 


출처 - https://kasckasc.tistory.com/entry/Oracle-CHAR-VARCHAR-VARCHAR2-%EC%B0%A8%EC%9D%B4

 

[Oracle] CHAR, VARCHAR, VARCHAR2 차이

데이터베이스 데이터 유형 및 CHAR와 VARCHAR 비교 데이터 유형은 데이터베이스의 테이블에 특정 자료를 입력할 때, 그 자료를 받아들일 공간을 자료의 유형별로 나누는 기준이다. 따라서 선언한

kasckasc.tistory.com

https://chuckolet.tistory.com/71

 

MYSQL에서 VARCHAR와 TEXT의 차이

char만 fixed length type이고, text와 varchar는 variable length data type 입니다. 아래 레퍼런스 글을 바탕으로 정리해보자면, text와 varchar는 max size limit을 정할 수 있는가 text: 없다, 무조건 65535 v..

chuckolet.tistory.com

 

Comments