당 MySQL의 문서 , 네 개의 텍스트 종류가 있습니다 :
- TINYTEXT
- 본문
- 중간 텍스트
- 긴 텍스트
문자 인코딩이 UTF-8이라고 가정 할 때 각 데이터 유형의 열에 저장할 수있는 최대 길이는 얼마입니까?
당 MySQL의 문서 , 네 개의 텍스트 종류가 있습니다 :
문자 인코딩이 UTF-8이라고 가정 할 때 각 데이터 유형의 열에 저장할 수있는 최대 길이는 얼마입니까?
답변:
로부터 문서 :
타입 | 최대 길이 ----------- + ------------------------------------- TINYTEXT | 255 (2 8 -1) 바이트 텍스트 | 65,535 (2 16 -1) 바이트 = 64 킬로바이트 MEDIUMTEXT | 16,777,215 (2 24 -1) = 16 바이트 MiB 크기 긴 텍스트 | 4294967295 (2 32 -1) = 4 바이트 지브
수 있습니다 문자 당신의 컬럼에 저장 될 수에 따라 달라집니다 문자 인코딩 .
A TEXT column with a maximum length of 255 (28 – 1) characters. The effective maximum length is less if the value contains multi-byte characters.
자세한 내용은 Ankan의 답변을 참조하십시오.
같은 답변의 확장
이것은 빠른 결정을위한 견고한 추정 테이블입니다!
배반
Type | A= worst case (x/3) | B = best case (x) | words estimate (A/4.5) - (B/4.5)
-----------+---------------------------------------------------------------------------
TINYTEXT | 85 | 255 | 18 - 56
TEXT | 21,845 | 65,535 | 4,854.44 - 14,563.33
MEDIUMTEXT | 5,592,415 | 16,777,215 | 1,242,758.8 - 3,728,270
LONGTEXT | 1,431,655,765 | 4,294,967,295 | 318,145,725.5 - 954,437,176.6
Chris V의 답변도 참조하십시오 : https://stackoverflow.com/a/35785869/1881812
TINYTEXT
는 레코드 크기에 대해 1 바이트 + 8 바이트를 VARCHAR(255)
계산 하는 반면 레코드 크기에 대해서는 1 바이트 + 255 바이트에서 최대 2 바이트 + 1020 바이트 (4 바이트 UTF-8 문자)까지 카운트합니다.
@ Ankan-Zerob의 도전으로, 이것은 단어로 측정 된 각 텍스트 유형에 저장할 수있는 최대 길이의 추정치입니다 .
Type | Bytes | English words | Multi-byte words
-----------+---------------+---------------+-----------------
TINYTEXT | 255 | ±44 | ±23
TEXT | 65,535 | ±11,000 | ±5,900
MEDIUMTEXT | 16,777,215 | ±2,800,000 | ±1,500,000
LONGTEXT | 4,294,967,295 | ±740,000,000 | ±380,000,000
에서 영어 , 단어 당 4.8 문자 좋은 평균 (예 : 아마 norvig.com/mayzner.html 워드 길이가 도메인에 따라 (학술 논문 대 예를 들어 음성 언어) 달라질 수 있지만, 너무 너무 정확한 것을 아무 소용이 없다). 영어는 대부분 1 바이트 ASCII 문자이며, 가끔씩 멀티 바이트 문자를 사용하므로 문자 당 1 바이트에 가깝습니다. 단어 간 공백에는 추가 문자가 허용되어야하므로 단어 당 5.8 바이트에서 반올림했습니다. 폴란드어와 같이 악센트가 많은 언어는 단어가 더 적은 독일어와 같이 단어가 약간 적게 저장됩니다.
그리스어, 아랍어, 히브리어, 힌디어, 태국어 등과 같은 멀티 바이트 문자가 필요한 언어는 일반적으로 UTF-8에서 문자 당 2 바이트가 필요합니다. 단어 당 5 글자를 거칠게 추측하면서 단어 당 11 바이트에서 반올림했습니다.
CJK 스크립트 (한지, 한자, 히라가나, 가타카나 등) 나는 아무것도 모른다. 나는 문자가 UTF-8에서 주로 3 바이트를 필요로한다고 생각하고 (단순화하면) 단어 당 약 2 문자를 사용하는 것으로 간주 될 수 있으므로 다른 두 문자 사이에있을 것입니다. (CJK 스크립트는 UTF-16을 사용하여 스토리지를 덜 필요로 할 수 있습니다).
이것은 물론 스토리지 오버 헤드 등을 무시합니다.