Чи може MySQL обробляти рядок довжиною 2 мільйони символів у BLOB


0

Пошук з використанням заголовка повернув 1 запитання про переповнення стека, яке не було пов’язане, а з документами MySQL 65535 символів було згадано як макс; але це ... нормальні персонажі чи це було б лише приблизно п’ята частина цього? Мені потрібно розібратися в цьому, щоб вирішити, чи намагатись поставити тисячі фрагментів даних, таких як 0A1D2A3B ..., в один , мабуть, дуже широкий стовпчик, щоб його можна було прочитати один раз, а потім діяти за допомогою php для маніпулювання рядком, або, щоб розмістити всі ці фрагменти даних у рядки, по одному в ряд.

Я вважаю, що швидше прочитати один стовпець і знайти дуже довгий рядок, ніж прочитати десятки тисяч рядків у масив, і тоді теж мені буде легше працювати з рядками, ніж масивами в php.


devzone.zend.com/26/using-mysql-full-text-searching Використовуйте повнотекстовий пошук MySQL. LONGBLOB, LONGTEXT 4294967295 (2 ^ 32 - 1) Або (2 ^ 32 - 2) / 2 - UTF8 символи.
СТТР

Чудовий ресурс, я прочитаю його глибоко.
MountainMan

Відповіді:


0

Чи може MySQL обробляти рядок довжиною 2 мільйони символів у BLOB?

Максимальний розмір а BLOB- 65535байти.

Однак якщо ви хочете зберігати великі значення, ви можете використовувати MEDIUMBLOB( 16,777,215байти) або LONGBLOB( 4Gбайти).

Примітка:

  • Під час використання набору символів Unicode не всі символи використовують однакову кількість байтів і можуть вимагати до трьох (чотирьох) байт на символ.

Однак:

Максимальний розмір об'єкта BLOB або TEXT визначається його типом, але найбільше значення, яке ви фактично можете передати між клієнтом і сервером, визначається обсягом наявної пам'яті та розміром буферів зв'язку.


UTF-8 - це те, що я буду вносити туди

Набір символів utf8 у MySQL 5.7 такий же, як і раніше 5.7, і має точно такі ж характеристики:

  • Немає підтримки додаткових символів (лише символи BMP).

  • Максимум три байти на багатобайтовий символ .


Що таке BLOB?

BLOB - це бінарний великий об'єкт, який може вміщувати змінну кількість даних. Чотири типи BLOB - це TINYBLOB, BLOB, MEDIUMBLOB та LONGBLOB. Вони відрізняються лише максимальною довжиною значень, які вони можуть утримувати. Чотири типи TEXT - TINYTEXT, TEXT, MEDIUMTEXT і LONGTEXT. Вони відповідають чотирьом типам BLOB і мають однакові максимальні довжини та вимоги до зберігання. Див. Розділ 11.7, "Вимоги щодо зберігання даних"

...

Максимальний розмір об'єкта BLOB або TEXT визначається його типом, але найбільше значення, яке ви насправді можете передати між клієнтом і сервером, визначається кількістю наявної пам'яті та розміром буферів зв'язку. Ви можете змінити розмір буфера повідомлень, змінивши значення змінної max_allowed_packet, але це потрібно зробити як для сервера, так і для клієнтської програми.

Джерело 11.4.3 Типи BLOB та TEXT :


Вимоги до зберігання для типів рядків

У наступній таблиці M представляє оголошену довжину стовпців у символах для небінарних типів рядків та байтів для типів бінарних рядків. L представляє фактичну довжину в байтах заданого значення рядка.

введіть тут опис зображення

...

На цій сторінці перелічені типи BLOB і TEXT і наведена формула для обчислення необхідного місця для зберігання, але вона не дає різних максимальних розмірів. Ось вони:

  • TINYTEXT - 255 байт
  • ТЕКСТ - 65535 байт
  • MEDIUMTEXT - 16 777 215 байт (2 ^ 24 - 1)
  • LONGTEXT - 4G байтів (2 ^ 32 - 1)

  • TINYBLOB - 255 байт

  • BLOB - 65535 байт
  • MEDIUMBLOB - 16 777 215 байт (2 ^ 24 - 1)
  • LONGBLOB - 4G байт (2 ^ 32 - 1)

Джерело Розділ 11.7 Вимоги Тип Зберігання даних :


Добре! це обнадіює. Я мав би сказати, що UTF-8 - це те, що я буду там вносити. У будь-якому випадку ці формули; Я буду працювати над ними, але це виглядає так, що він може впоратися з усім цим легко. (Я все ще не впевнений у тому, що сервер видає клієнт, але я не вважаю, що це потрібно вирішувати; робота буде виконана на сервері. Багато вдячного.
MountainMan

@MountainMan Дивіться 10.1.10.5 Набір символів utf8 (3-байтний кодування UTF-8 Unicode), якщо ви використовуєте UTF-8. Використовує максимум 3 байти на символ.
DavidPostill
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.