En relación con el rendimiento, la integridad y el almacenamiento en disco en la capa de base de datos, no se preocupe.
- Los datos de longitud variable como varchar, texto y blob se almacenan sin relleno.
- No conozco ningún problema con la integridad. Todos los tipos de datos son tratados atómicamente por el motor de base de datos.
- Por supuesto, si tiene datos de texto realmente largos, se necesitará más almacenamiento y más tiempo para la E/S del disco y el ancho de banda de la red cuando recupere esos datos. Pero si esa es la información que necesita poner en la base de datos, entonces eso es lo que tiene que hacer.
puedo pensar en una posible impacto:
Algunas bibliotecas de interfaz de cliente pre-asignar un búfer para mantener los resultados, y asignar suficiente memoria para el valor más grande posible, ya que el cliente no conoce el datos hasta que obtenga Por lo tanto, la biblioteca asignaría 16 MB por mediumtext
mientras que asignaría 64 KB por text
. Esto es algo a lo que debe tener cuidado si tiene un límite de memoria bajo en la capa de su cliente. Por ejemplo, PHP tiene un parámetro de configuración memory_limit
para scripts, y el búfer asignado para los conjuntos de resultados de datos contaría para esto.
Gracias por la respuesta rápida, Bill! – scooterhanson
'Algunas bibliotecas de interfaz de cliente', encontré que este problema de memoria era un problema con las antiguas bibliotecas de mysql en PHP. Sin embargo, 3 años después, esto ya no debería ser un problema. – kasimir
@kasimir: con PHP 5.6 y PDO, 'mediumtext' usa más memoria que' text' (con el mismo valor, una cadena vacía). En mi prueba simple, la diferencia es de 0.5 MiB vs. 1.5 MiB. – Bell