MySQL "텍스트" 필드에 UTF-8 텍스트가 어느 정도 들어갑니까?
MySQL에 따르면text
column에는 65,535바이트가 포함됩니다.
이것이 정당한 경계라면 실제로는 약 32k UTF-8 문자밖에 들어가지 않습니다.아니면 문서를 작성한 사람이 문자와 바이트를 구분할 수 없는 "퍼지" 경계 중 하나이며, 다음과 같이 설정하면 실제로 최대 64,000개의 UTF-8 문자를 사용할 수 있습니다.utf8_general_ci
?
A text
컬럼은 최대65,535
바이트 수
안utf-8
문자는 최대 3바이트입니다.
그러니까... 당신의 실제 한계는21,844
성격.
상세한 것에 대하여는, 다음의 메뉴얼을 참조해 주세요.http://dev.mysql.com/doc/refman/5.1/en/string-type-overview.html
가변 길이 문자열.M은 최대 열 길이를 문자로 나타냅니다.M의 범위는 0 ~65,535입니다VARCHAR의 유효 최대 길이는 최대 행 크기(65,535 바이트, 모든 열에서 공유) 및 사용되는 문자 세트에 따라 달라집니다.예를 들어 utf8 문자는 1 문자당 최대 3 바이트가 필요하므로 utf8 문자 세트를 사용하는 VARCHAR 열은 최대 21,844 문자로 선언할 수 있습니다.
UTF-8 문자는 각각 최대 4바이트까지 사용할 수 있습니다.단, 상정대로2 바이트는 사용할 수 없습니다.UTF-8은 Unicode 코드 포인트 내의 유효 비트 수에 따라 가변 폭 부호화입니다.
- Unicode 코드 포인트의 7비트 이하: UTF-8의 1바이트
- 8 ~ 11 비트: UTF-8의 경우 2 바이트
- 12 ~ 16 비트: 3 바이트
- 17 ~ 21 비트 : 4 바이트
원래의 UTF-8 사양에서는, 최대 31 비트의 Unicode 값을 부호화할 수 있습니다.UTF-8 형식으로 부호화하려면 최대 6 바이트가 필요합니다.UTF-8이 보급된 후 유니코드 컨소시엄은 2-1 이상의21 코드 포인트는 사용하지 않겠다고 선언했습니다.이것은 현재 RFC 3629로 표준화되어 있습니다.
현재 MySQL(버전 5.6)은 Unicode Basic Multilanguage Plane 문자만 지원하며 UTF-8은 1글자당 최대 3바이트가 필요합니다.즉, 당신의 질문에 대한 현재 대답은TEXT
필드에는 최소 21,844자를 사용할 수 있습니다.
보는 방법에 따라 실제 제한은 이보다 높거나 낮습니다.
MySQL 또는 MySQL의 포크 중 하나에서 BMP 제한이 해제될 것으로 가정할 경우 MySQL 클라이언트가 임의의 유니코드 텍스트 입력을 허용한다면 이 필드에 16,383자 이상의 문자를 저장할 수 있을 것으로 기대해서는 안 됩니다.
한편 UTF-8이 가변폭 부호화라는 사실을 이용할 수 있습니다.대부분의 텍스트가 평이한 영어로 되어 있고, ASC 이외의 텍스트도 간혹 있습니다.II 문자, 실제 사용 중인 유효 제한은 최대 64KB - 1자 제한에 도달할 수 있습니다.
그러나 MySQL은 기본 키로 사용할 경우 각 열 크기 제한이 키에 3바이트를 추가하는 것으로 가정합니다.
mysql> alter table test2 modify code varchar(333) character set utf8;
Query OK, 0 rows affected (0.05 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> alter table test2 modify code varchar(334) character set utf8;
ERROR 1071 (42000): Specified key was too long; max key length is 1000 bytes
긴 스트링 컬럼을 프라이머리 키로 사용하는 것은 일반적인 방법이지만, 상용(!) 제품 데이터베이스를 사용할 때 이 문제를 접한 적이 있습니다.
언급URL : https://stackoverflow.com/questions/4420164/how-much-utf-8-text-fits-in-a-mysql-text-field
'source' 카테고리의 다른 글
Map.clear() vs new Map : 어떤 것이 더 좋을까요? (0) | 2022.12.08 |
---|---|
나가는 것과 돌아오는 것의 차이는 무엇입니까? (0) | 2022.12.08 |
JavaScript 개체의 길이 (0) | 2022.12.08 |
PDO 준비 스테이트먼트:예상된 결과 대신 NULL 가져오기 (0) | 2022.12.08 |
python의 zip과 같은 php 기능이 있나요? (0) | 2022.12.08 |