스키마를 작성하면서 데이터타입으로 int, varchar(255), date 등을 가장 많이 사용했다. 그러다가 게시물과 같이 많은 글을 쓰는 경우 어떤 데이터타입을 사용해야하는지를 찾아보다가 String 데이터타입의 종류로 varchar
, char
, text
, mediumtext
, longtext
등을 알게 되었다.
String Data Types
c
바이트(for maxSizd<=255
) 또는 1+2
바이트(for 256<=maxSize<=65535
)만큼의 디스크 용량을 차지한다. (여기서 c는 저장된 글자수)Holds a string with a maximum length of 65,535 bytes
c
바이트만큼의 디스크 용량을 차지한다. (여기서 c는 저장된 글자수)Holds a string witha maximum length of 16,777,215 characters
Holds a string with a maximum length of 4,294,967,295 characters
Text와 Varchar 성능 차이
blob 또는 text 칼럼은 메모리 엔진에서 지원하지 않는 데이터테입이기 때문에 디스크의 임시 테이블에 복사되어 저장된다. 이 점 때문에 쿼리문을 사용할때, 디스크에 저장된 테이블에서 처리해야하는데, 이는 성능에서 패널티를 발생시킨다. 따라서 이 두 데이터타입은 필요한 경우에만 사용되어야 한다.
Instances of BLOB or TEXT columns in the result of a query that is processed using a temporary table causes the server to use a table on disk rather than in memory because the MEMORY storage engine does not support those data types (see Section 8.4.4, “Internal Temporary Table Use in MySQL”). Use of disk incurs a performance penalty, so include BLOB or TEXT columns in the query result only if they are really needed.
게시물 내용(content)를 어떤 데이터타입으로 해야할지 생각해보면서 찾아보며 공부한 내용인데, varchar를 쓰는게 적절하다는 생각이 든다.
reference