MySQL string column(field) size

# MySQL 스트링 타입으로 선언된 컬럼(필드)의 경우 크기 제한이 있다.
# TEXT 경우 크기에 따라 타입이 세분화 된다.
varchar(M)  -> M 크기내에서 실제 사용한 크기 만큼, M<=65536
tinytext -> 2^8 -> 256 byte
text -> 2^16 -> 65,536 byte
mediumtext -> 2^24 -> 16,777,216 byte (16MB)
longtext -> 2^32 -> 4,294,967,296 byte (4GB)
varchar 는 메모리에 올려 둘 수 있지만 text 부터는 디스크를 매번 액세스 하기 때문 느리다.
참고
http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
https://dev.mysql.com/doc/refman/5.7/en/storage-requirements.html

# varchar 실제 값 길이 파악
# aaa 컬럼이 varchar(10) 이고 '가나다' 라고 했을때
# length: byte 크기로 한글3byte x 3 = 9
# char_length: 글자 크기로 3 이 된다.
select aaa, length(aaa), char_length(aaa) from ysoftman.table1;

# utf8 은 최대 (가변) 3바이트인데, 
# utf8mb4 인코딩의 db 는 최대(가변) 4바이트로 표현될 수 있다.(한글은 3바이트)
# 예) varchar, text 는 4바이트 문자로만 되어 있다면 65536 / 4 = 16384 개의 글자만 입력 가능한다.

comments:

댓글 쓰기