• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 1. 데이터 형식 요약
    2. 수치형
    3. 날짜와 시간 형
    4. 문자열
    1. CHAR 및 VARCHAR 형
    2. BINARY 및 VARBINARY 형
    3. BLOB 형태와 TEXT 형태
    4. ENUM 형태
    5. SET형
    5. 공간 데이터의 확장
    6. 데이터 형 기본값
    7. 데이터 유형의 스토리지 요구 사항
    8. 컬럼에 적절한 형태의 선택
    9. 기타 데이터베이스 엔진의 데이터 형식 사용
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

11.4.3 BLOB 형태와 TEXT 형태

BLOB 는 다양한 용량의 데이터를 저장할 수있는 큰 이진 개체입니다. BLOB 형은 TINYBLOB , BLOB , MEDIUMBLOB 와 LONGBLOB 의 4 가지가 있습니다. 이러한 차이는 유지할 수있는 값의 최대 길이뿐입니다. TEXT 형은 TINYTEXT , TEXT , MEDIUMTEXT , 그리고 LONGTEXT 의 4 가지가 있습니다. 이들은 4 개의 BLOB 형태에 대응하고 최대 길이 및 스토리지 요구 사항은 동일합니다. 섹션 11.7 "데이터 타입 스토리지 요구 사항" 을 참조하십시오.

BLOB 값은 바이너리 스트링 (바이트 문자열)로 처리됩니다. 여기에는 문자 세트가없고, 정렬 및 비교는 컬럼 값의 바이트의 수치에 근거합니다. TEXT 값은 비 이진 문자열 (문자열)로 처리됩니다. 여기에는 문자 집합이 값은 문자 집합의 정렬 순서에 따라 정렬 및 비교됩니다.

엄격한 SQL 모드가 유효하지 않은 경우에, BLOB 또는 TEXT 컬럼에 최대 길이를 초과하는 값을 지정하면 그 값은 컬럼의 최대 길이에 맞게 절단되고 경고 메시지가 표시됩니다. 공백이 아닌 문자의 절단에 대해서는 엄격한 SQL 모드를 사용하면 경고가 아닌 오류를 발생시키고, 그 값의 삽입을 억제 할 수 있습니다. 섹션 5.1.7 "서버 SQL 모드" 를 참조하십시오.

TEXT 컬럼에 삽입되는 값에서 초과 된 후행 공백을 절단함으로써 SQL 모드에 관계없이 항상 경고가 생성됩니다.

TEXT 및 BLOB 컬럼은 삽입시에 패딩되지 않고 선택시 바이트는 제거되지 않습니다.

TEXT 컬럼에 인덱스가 설정되어 있으면 인덱스 항목의 비교는 끝이 공간에 채워집니다. 이것은 인덱스 고유 값이 필요한 경우 후행 공백의 개수 만 다른 값에 중복 키 에러가 발생한다는 것을 의미합니다. 예를 들어, 테이블에 'a' 가 포함되어있는 경우 'a ' 를 저장하려고하면 중복 키 오류가 발생합니다. 이것은 BLOB 컬럼에는 적용되지 않습니다.

대부분의 점에서 BLOB 컬럼을 원하는 길이로 설정할 수있는 VARBINARY 컬럼으로 간주 할 수 있습니다. 마찬가지로, TEXT 컬럼을 VARCHAR 컬럼으로 간주 할 수 있습니다. BLOB 과 TEXT 는 다음 사항에 VARBINARY 및 VARCHAR 과 다릅니다.

  • BLOB 와 TEXT 컬럼의 인덱스는 인덱스 프리픽스 길이를 지정해야합니다. CHAR 와 VARCHAR 는 프리픽스 길이는 옵션입니다. 섹션 8.3.4 "컬럼 인덱스" 를 참조하십시오.

  • BLOB 및 TEXT 컬럼에 DEFAULT 값을 포함 할 수 없습니다.

BINARY 속성을 TEXT 데이터 타입과 함께 사용하면 열 문자 집합의 이진 데이터 정렬이 컬럼에 할당됩니다.

LONG 및 LONG VARCHAR 는 MEDIUMTEXT 데이터 형에 맵합니다. 이것은 호환 기능입니다.

MySQL Connector / ODBC는 BLOB 값을 LONGVARBINARY 으로 TEXT 값을 LONGVARCHAR 로 정의합니다.

BLOB 값과 TEXT 값은 매우 길어질 수 있으므로 사용할 때 다음의 제약이 발생할 수 있습니다.

  • 정렬시에는 컬럼의 max_sort_length 바이트 만 사용됩니다. max_sort_length 의 기본값은 1024입니다. 서버 시작시 또는 실행시에 max_sort_length 의 값을 증가시킴으로써 정렬 또는 그룹화에 영향을주는 바이트를 늘릴 수 있습니다. 모든 클라이언트에서 max_sort_length 세션 변수의 값을 변경할 수 있습니다.

     mysql> SET max_sort_length = 2000;
     mysql> SELECT id, comment FROM t
         -> ORDER BY comment;
    
  • 임시 테이블을 사용하여 처리되는 쿼리의 결과에 BLOB 컬럼 또는 TEXT 컬럼의 인스턴스가 있으면 MEMORY 스토리지 엔진이 이러한 데이터 형식을 지원하지 않기 때문에 서버는 메모리가 아닌 디스크에서 테이블을 사용합니다 ( 섹션 8.4.4 "MySQL이 내부 임시 테이블을 사용하는 방법" 을 참조하십시오). 디스크의 사용은 성능 저하를 수반하므로 쿼리 결과에 BLOB 컬럼 또는 TEXT 컬럼을 포함하는 것은 필요한 경우에 한정합니다. 예를 들어, SELECT * 는 모든 컬럼을 선택하기 때문에 사용하지 마십시오.

  • BLOB 또는 TEXT 오브젝트의 최대 크기는 그 형태에 따라 결정됩니다 만, 클라이언트와 서버간에 실제로 송신 할 수있는 최대치는 사용 가능한 메모리 용량과 통신 버퍼의 크기에 따라 결정됩니다. max_allowed_packet 변수의 값을 변경하여 메시지 버퍼 크기를 변경할 수 있지만, 서버와 클라이언트 프로그램에서 모두 변경해야합니다. 예를 들어, mysql 및 mysqldump 중 어느 것을 사용하여도 클라이언트 측의 max_allowed_packet 값을 변경할 수 있습니다. 섹션 8.11.2 "서버 파라미터의 튜닝」 , 섹션 4.5.1 "mysql - MySQL 명령 행 도구" , 섹션 4.5.4 "mysqldump - 데이터베이스 백업 프로그램" 을 참조하십시오. 패킷 크기 및 정렬 데이터 객체의 크기를 스토리지 요구 사항과 비교 할 수 있습니다. 섹션 11.7 "데이터 타입 스토리지 요구 사항" 을 참조하십시오.

BLOB 값 또는 TEXT 값은 각각 개별적으로 할당 된 객체에 의해 내부적으로 표현됩니다. 이것은 테이블이 열릴 때 열마다 한 번 스토리지가 할당 된 다른 모든 데이터 유형과 대조적입니다.

미디어 파일 등의 바이너리 데이터를 BLOB 또는 TEXT 컬럼에 저장하는 것이 좋은 경우도 있습니다. 이러한 데이터의 처리는 MySQL의 문자열 조작 함수가 도움이 될 수 있습니다. 섹션 12.5 "문자열 함수" 를 참조하십시오. 보안 등의 이유로 일반적으로 응용 프로그램 사용자에 FILE 권한을주는 것이 아니라 응용 프로그램 코드를 사용하여 실행하는 것이 좋습니다. MySQL 포럼 ( http://forums.mysql.com/ )는 다양한 언어와 플랫폼에 대한 자세한 내용 토론 할 수 있습니다.

서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved