Максимальные объемы хранения TINYTEXT, TEXT, MEDIUMTEXT и LONGTEXT

Per документы docs, существует четыре типа TEXT:

  • TINYTEXT
  • ТЕКСТ
  • MEDIUMTEXT
  • LONGTEXT

Какова максимальная длина, которую я могу сохранить в столбце каждого типа данных, если кодировка символов UTF-8?

+551
18 дек. '12 в 12:13
источник поделиться
4 ответа

Из документации:

      Type | Maximum length
-----------+-------------------------------------
  TINYTEXT |           255 (2 8−1) bytes
      TEXT |        65,535 (216−1) bytes = 64 KiB
MEDIUMTEXT |    16,777,215 (224−1) bytes = 16 MiB
  LONGTEXT | 4,294,967,295 (232−1) bytes =  4 GiB

Обратите внимание, что количество символов, которое может быть сохранено в вашем столбце, будет зависеть от кодировки символов.

+1117
18 дек. '12 в 12:18
источник

Связанные вопросы


Похожие вопросы

Расширение того же ответа

ЭТО ТАКОЕ ОГРАНИЧЕННОЙ МАТЕРИАЛЫ ДЛЯ БЫСТРЫХ РЕШЕНИЙ!

  • Итак, самые худшие предположения (3 байта на utf-8 char) в лучшем случае (1 байт на utf-8 char)
  • Предполагая, что английский язык имеет в среднем 4,5 буквы на слово
  • x - количество выделенных байтов

х-х

      Type | A= worst case (x/3) | B = best case (x) | words estimate (A/4.5) - (B/4.5)
-----------+---------------------------------------------------------------------------
  TINYTEXT |              85     | 255               | 18 - 56
      TEXT |           21845     | 65,535            | 4854.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

Обратите также внимание на ответ Криса V: qaru.site/questions/13896/...

+170
19 апр. '14 в 12:18
источник

Поднимаясь к задаче @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), хотя длина слов будет варьироваться в зависимости от домен (например, разговорный язык и академические документы), поэтому нет смысла быть слишком точным. Английский - это, в основном, однобайтные символы ASCII, с очень случайными многобайтовыми символами, настолько близкими к одному байту за букву. Дополнительный символ должен быть разрешен для межсловных пространств, поэтому я закруглялся с 5.8 байт на каждое слово. Языки с большим количеством акцентов, например, польский, будут хранить немного меньше слов, например, например. Немецкий с более длинными словами.

Языки, требующие многобайтовых символов, таких как греческий, арабский, иврит, хинди, тайский и т.д., обычно требуют двух байтов на символ в UTF-8. Угадав дико на 5 букв в слове, я закруглялся с 11 байт на каждое слово.

CJK-скрипты (Hanzi, Kanji, Hiragana, Katakana и т.д.) Я ничего не знаю; Я считаю, что в большинстве случаев для UTF-8 характерны 3 байта, и (с массивным упрощением) они могут считаться использующими около 2 символов на слово, поэтому они будут находиться где-то между двумя другими. (Сценарии CJK, вероятно, потребуют меньше хранилища с использованием UTF-16, в зависимости).

Это, конечно, игнорирует накладные расходы на хранение и т.д.

+22
04 мар. '16 в 0:33
источник

"VARCHAR всегда следует использовать вместо TINYTEXT". Tinytext полезен, если у вас широкие строки - поскольку данные хранятся вне записи. Накладные расходы на производительность, но это действительно полезно.

+2
18 мая '17 в 15:36
источник

Посмотрите другие вопросы по меткам или Задайте вопрос