Categorie
Sviluppo software

MySQL TEXT, MEDIUMTEXT e LONGTEXT … quali sono i limiti?

MySQL quali sono i limiti per TEXT, MEDIUMTEXT e LONGTEXT
MySQL Logo

Durante il design di un database relazionale, specialmente in ambito web, capita di dover gestire dati formati da porzioni di testo piuttosto corpose. Utilizzando MySQL ci vengono in soccorso quattro tipi, TINYTEXT, TEXT, MEDIUMTEXT e LONGTEXT. A differenza degli altri tipi non è possibile specificare una lunghezza per l’input atteso, ragion per cui, se si ignora quale sia il limite reale si può incorrere in troncamenti inattesi e soprattutto SILENTI.

La lunghezza di questi tipi è definita nella sezione 6.2 del manuale online di MySQL, ed in particolare si parla di:

  • TINYTEXT  256 bytes
  • TEXT           65,535 bytes  ~  64kb
  • MEDIUMTEXT   16,777,215 bytes  ~  16MB
  • LONGTEXT  4,294,967,295 bytes  ~  4GB

Nella maggioranza dei casi quindi utilizzare TEXT è la scelta più adeguata ma è sempre sapere qual è il limite per non incorrere in troncamenti indesiderati e difficilmente individuabili. Il risultato sarebbe quindi infatti di un blocco di testo mancante in una determinata colonna, in corrispondenza di una INSERT che comunque ha avuto successo.

Personalmente a ELbuild controllo sempre lato software, per evitare spiacevoli sorprese, anche se l’adozione sempre più spinta di sistemi come JPA consente allo sviluppatore di delegare molti di questi dettagli implementativi al framework di persistenza, semplicemente scrivendo qualche annotazione in più.

Di Luca Adamo

Luca Adamo si è laureato con lode in Ingegneria delle Telecomunicazioni all'Università degli studi di Firenze ed è dottorando in Ingegneria Informatica, Multimedialità e Telecomunicazioni, sempre nella stessa facoltà. Le sue competenze tecniche includono lo sviluppo software, sia orientato al web che desktop, in C/C++ e Java (J2EE, J2SE, J2ME), l'amministrazione di macchine Unix-based, la gestione di reti di telecomunicazioni, ed il design di database relazionali.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.