Какие-либо подводные камни преобразования поля MySQL TEXT в MDIUMTEXT?

Я понимаю ограничения по размеру/хранилищу для полей MySQL TEXT и MDIUMTEXT, но я просто хотел быть абсолютно уверенным (прежде чем подписывать изменения), что я не смотрю на какие-либо неблагоприятные последствия от преобразования поля с существующими данными из TEXT в МЕДИУМТЕКСТ.

Мои опасения в основном связаны с производительностью, целостностью и дисковым пространством.

Спасибо


person scooterhanson    schedule 18.08.2010    source источник


Ответы (1)


Что касается производительности, целостности и дискового пространства на уровне базы данных, я бы не беспокоился об этом.

  • Данные переменной длины, такие как varchar, text и blob, хранятся без заполнения.
  • Я не знаю никаких проблем с целостностью. Все типы данных обрабатываются ядром базы данных атомарно.
  • Конечно, если у вас есть очень длинные текстовые данные, тогда потребуется больше места для хранения и больше времени для дискового ввода-вывода и пропускной способности сети при извлечении этих данных. Но если это данные, которые вам нужно поместить в базу данных, то это то, что вы должны сделать.

Я могу думать об одном возможном воздействии:

Некоторые библиотеки клиентского интерфейса предварительно выделяют буфер для хранения результатов и выделяют достаточно памяти для максимально возможного значения. Клиент не знает длину данных до того, как он извлечет данные, поэтому он должен выделить достаточно места, предполагая, что длина данных может поддерживаться типом данных.

Следовательно, библиотека будет выделять 16 МБ на mediumtext, а 64 КБ — на text. Это то, на что следует обратить внимание, если у вас низкий лимит памяти на клиентском уровне. Например, в PHP есть параметр конфигурации memory_limit для сценариев, и буфер, выделенный для наборов результатов данных, будет учитываться при этом.

person Bill Karwin    schedule 18.08.2010
comment
Спасибо за быстрый ответ, Билл! - person scooterhanson; 19.08.2010
comment
«Некоторые библиотеки клиентского интерфейса», я обнаружил, что эта проблема с памятью была связана со старыми библиотеками mysql в PHP. Однако спустя 3 года это уже не должно быть проблемой. - person kasimir; 11.12.2013
comment
@kasimir: с PHP 5.6 и PDO mediumtext использует больше памяти, чем text (с тем же значением, пустой строкой). В моем простом тесте разница составляет 0,5 МБ против 1,5 МБ. - person Bell; 30.12.2015