Tinytext, TEXT, MEDIUMTEXT и LONGTEXT максимальные размеры хранения



на документы MySQL, есть четыре типа текста:




  1. TINYTEXT

  2. текст

  3. MEDIUMTEXT

  4. LONGTEXT


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

912   4  

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

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

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

  1. это так пост : varchar(255) vs tinytext/tinyblob и varchar (65535) vs blob/text подробно описаны накладные расходы и механизмы хранения.
  2. как отмечено в пункте (1), вместо TINYTEXT всегда следует использовать VARCHAR. Однако при использовании VARCHAR максимальный размер строки не должен превышать 65535 байт.
  3. как описано здесь http://dev.mysql.com/doc/refman/5.0/en/charset-unicode-utf8.html, максимум 3 байта для utf-8.

ЭТО ГРУБАЯ ТАБЛИЦА ОЦЕНКИ ДЛЯ БЫСТРОГО ПРИНЯТИЯ РЕШЕНИЙ!

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

x-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:https://stackoverflow.com/a/35785869/1881812

поднимаясь на вызов @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

In английский язык, 4,8 буквы на слово, вероятно, хороший средний (например norvig.com/mayzner.html), хотя длина слов будет варьироваться в зависимости от области (например, разговорный язык против академических работ), поэтому нет смысла быть слишком точным. Английский язык-это в основном однобайтовые символы ASCII, с очень случайные многобайтовые символы, так близко к одному байту на букву. Дополнительный символ должен быть разрешен для межсловных пространств, поэтому я округлил его с 5,8 байта на слово. Языки с большим количеством акцентов, таких как польский, будут хранить немного меньше слов, как, например, немецкий с более длинными словами.

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

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

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

Это хорошо, но не отвечает на вопрос:

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

Comments

    Ничего не найдено.