Предположительно, вы исключили альтернативу хранения этих элементов текста в файлах и сохранили их пути в своей таблице. Если вы не учли этот выбор, сделайте это. Чаще всего это самый практичный способ обработки такого приложения. Это особенно верно, если вы используете веб-сервер для доставки вашей информации своим пользователям: путем помещения этих объектов в вашу файловую систему вы избегаете очень серьезного узкого места производства (извлечение объектов из СУБД, а затем отправка их пользователю).
LOB (большие объекты) MySQL будут без проблем загружать 300 тысяч символов. MEDIUMTEXT обрабатывает 16 мегабайт. Но работа по программированию, необходимая для загрузки этих объектов в СУБД и их повторного запуска, может быть немного сложной задачей. Вы не упомянули свой стек приложений, поэтому вам сложно дать вам конкретные советы по этому поводу. Когда начать? читайте о параметре сервера MySQL max_allowed_packet
.
Если это был мой проект, и по какой-то причине использование файловой системы не могло быть и речи, я бы сохранил большие текстовые статьи в виде сегментов в более коротких строках. Например, вместо
textid textval
(int) (MEDIUMTEXT)
number lots and lots and lots of text.
Я бы сделал таблицу, как это:
textid segmentid textval
(int) (int) (VARCHAR(250))
number 1 Lots and
number 2 lots and
number 3 lots of
number 4 text.
Длина сегмента, вероятно, следует быть около 250 символов каждая в длину. Я думаю, вы были бы умны, чтобы сломать сегменты на границах слов, если сможете; это облегчит поиск файлов, таких как FULLTEXT. Это приведет ко многим коротким строкам для ваших больших текстовых элементов, но это сделает ваше программирование, ваши резервные копии и все остальное о вашей системе. легче обрабатывать все вокруг.
Существует первоначальная стоимость, но, вероятно, стоит того.
«как-то ограниченный» Вы посмотрели на максимальные размеры? Сначала Google, затем спросите. –
'MEDUMTEXT' позволяет до 2^24 байта, что составляет около 16 МБ. 'LONGTEXT' позволяет 2^32, около 4 ГБ. – Barmar
Удивительный! Благодаря! Просто нужно было выяснить, сколько бит было в этой строке – JoeDanger