Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL BLOB vs TEXT 데이터 타입 차이점 완벽 정리

MySQL에서 대용량 데이터를 저장할 때 자주 사용되는 두 가지 데이터 타입이 바로 BLOBTEXT입니다. 두 타입 모두 큰 데이터를 저장할 수 있지만, 저장하는 데이터의 성격과 내부 동작 방식에서 중요한 차이가 있습니다.

BLOB(Binary Large Object)란?

BLOB는 Binary Large Object(바이너리 대형 객체)의 약자로, 이름 그대로 이진(binary) 데이터를 저장하는 데 사용됩니다. 따라서 이미지, 동영상, 사운드 파일, 실행 프로그램 등 다양한 바이너리 형식의 데이터를 저장할 수 있습니다.

예를 들어 아래와 같은 이미지 파일은 바이너리 데이터로 구성되어 있기 때문에 BLOB 컬럼에 그대로 저장할 수 있습니다.

MySQL BLOB vs TEXT 데이터 타입 차이점 완벽 정리

BLOB와 TEXT의 핵심 차이점

BLOB 값은 바이트 문자열(byte string)처럼 동작하며 문자셋(character set)이 없습니다. 따라서 BLOB 값의 비교와 정렬은 오직 각 바이트의 숫자 값(numeric byte value)에만 의존합니다.

반면 TEXT 값은 비(非)바이너리 문자열, 즉 일반 문자열(character string)처럼 동작합니다. TEXT에는 문자셋이 존재하며, 값의 비교와 정렬은 해당 문자셋에 설정된 콜레이션(collation) 규칙에 따라 결정됩니다.

정리하면 다음과 같습니다.
- BLOB: 바이너리 데이터 전용, 문자셋 없음, 바이트 값 기준으로 비교·정렬
- TEXT: 문자열 데이터 전용, 문자셋 존재, 콜레이션 기준으로 비교·정렬

TEXT 데이터 타입으로 테이블 생성하기

다음 예제는 TEXT 타입의 컬럼을 가진 테이블을 생성하는 방법입니다.

mysql> create table TextTableDemo
   -> (
   -> Address TEXT
   -> );
Query OK, 0 rows affected (0.58 sec)

DESC 명령어를 사용하여 테이블 구조를 확인해 보겠습니다.

mysql> DESC TextTableDemo;

실행 결과는 다음과 같습니다.

+---------+------+------+-----+---------+-------+
| Field   | Type | Null | Key | Default | Extra |
+---------+------+------+-----+---------+-------+
| Address | TEXT | YES  |     | NULL    |       |
+---------+------+------+-----+---------+-------+
1 row in set (0.08 sec)

위 출력 결과에서 'Type' 열은 해당 컬럼의 데이터 타입이 TEXT임을 보여줍니다.

BLOB 데이터 타입으로 테이블 생성하기

이번에는 BLOB 타입의 컬럼을 가진 테이블을 생성해 보겠습니다.

mysql> create table BlobTableDemo
   -> (
   -> Images BLOB
   -> );
Query OK, 0 rows affected (0.51 sec)

마찬가지로 DESC 명령어로 테이블 구조를 확인합니다.

mysql> desc BlobTableDemo;

실행 결과는 다음과 같습니다.

+--------+------+------+-----+---------+-------+
| Field  | Type | Null | Key | Default | Extra |
+--------+------+------+-----+---------+-------+
| Images | BLOB | YES  |     | NULL    |       |
+--------+------+------+-----+---------+-------+
1 row in set (0.04 sec)

출력 결과의 'Type' 열을 통해 해당 컬럼의 데이터 타입이 BLOB임을 확인할 수 있습니다.

참고: BLOB와 TEXT의 크기별 종류

BLOB와 TEXT는 각각 네 가지 하위 타입을 제공하며, 저장할 수 있는 최대 크기가 서로 다릅니다.

- TINYBLOB / TINYTEXT: 최대 255바이트
- BLOB / TEXT: 최대 65,535바이트(약 64KB)
- MEDIUMBLOB / MEDIUMTEXT: 최대 16,777,215바이트(약 16MB)
- LONGBLOB / LONGTEXT: 최대 4,294,967,295바이트(약 4GB)

저장하려는 데이터의 크기와 성격(바이너리 여부)을 고려하여 적절한 타입을 선택하는 것이 중요합니다.