mediumtext - varchar mysql tamaño maximo
¿Cuál es el tamaño máximo de MySQL VARCHAR? (8)
Me gustaría saber cuál es el tamaño máximo para un tipo MySQL VARCHAR.
Leí que el tamaño máximo está limitado por el tamaño de la fila, que es aproximadamente 65k. Intenté configurar el campo a varchar(20000)
pero dice que eso es demasiado grande.
Podría establecerlo en varchar(10000)
. ¿Cuál es el máximo exacto que puedo configurarlo?
Antes de la versión Mysql 5.0.3, el tipo de datos Varchar puede almacenar 255 caracteres, pero desde 5.0.3 puede almacenar 65.535 caracteres.
PERO tiene una limitación de tamaño máximo de fila de 65,535 bytes. Significa que incluyendo todas las columnas no debe tener más de 65,535 bytes.
En su caso, es posible que cuando esté intentando configurar más de 10000 esté superando los 65,535 y mysql le dé el error.
Para obtener más información: https://dev.mysql.com/doc/refman/5.0/en/column-count-limit.html
blog con ejemplo: goo.gl/Hli6G3
De la documentación de MySQL:
La longitud máxima efectiva de un VARCHAR en MySQL 5.0.3 y versiones posteriores está sujeta al tamaño máximo de fila (65.535 bytes, que se comparte entre todas las columnas) y al conjunto de caracteres utilizado. Por ejemplo, los caracteres utf8 pueden requerir hasta tres bytes por carácter, por lo que una columna VARCHAR que utiliza el conjunto de caracteres utf8 puede declararse con un máximo de 21,844 caracteres.
Los límites para el VARCHAR varían según el juego de caracteres utilizado. Usar ASCII usaría 1 byte por carácter. Lo que significa que podría almacenar 65.535 caracteres. El uso de utf8 utilizará 3 bytes por carácter, lo que da como resultado un límite de caracteres de 21,844. ¡PERO si estás usando el moderno juego de caracteres multibyte utf8mb4 que deberías usar! Es compatible con emojis y otros caracteres especiales. Estará utilizando 4 bytes por carácter. Esto limitará el número de caracteres por tabla a 16,383. Tenga en cuenta que otros campos, como INT, también se contabilizarán en estos límites.
Conclusión:
utf8 máximo de 21,844 caracteres
utf8mb4 máximo de 16,383 caracteres
El tamaño máximo de MySQL VARCHAR es de 65.535 bytes. Se puede almacenar 65.535 caracteres.
Puede usar el http://dev.mysql.com/doc/refman/5.1/en/blob.html , que no está limitado a 64 KB.
Según los documentos en línea , hay un límite de fila de 64 K y puede calcular el tamaño de la fila utilizando:
row length = 1
+ (sum of column lengths)
+ (number of NULL columns + delete_flag + 7)/8
+ (number of variable-length columns)
Debe tener en cuenta que las longitudes de las columnas no son un mapeo uno a uno de su tamaño. Por ejemplo, CHAR(10) CHARACTER SET utf8
requiere tres bytes para cada uno de los diez caracteres, ya que esa codificación particular debe tener en cuenta la propiedad de tres bytes por carácter de utf8
(esa es la codificación utf8
de MySQL en lugar de UTF- "real" 8, que puede tener hasta cuatro bytes).
Pero, si el tamaño de su fila se aproxima a 64K, es posible que desee examinar el esquema de su base de datos. Es una tabla rara que debe ser tan amplia en una base de datos configurada correctamente (3NF); es posible, pero no muy común.
Si desea utilizar más que eso, puede usar los tipos BLOB
o TEXT
. Estos no cuentan para el límite de 64K de la fila (excepto una pequeña huella administrativa) pero debe tener en cuenta otros problemas que surgen de su uso, como no poder ordenar el uso del bloque de texto completo más allá de un cierto número de caracteres (aunque esto se puede configurar hacia arriba), obligando a las tablas temporales a estar en el disco en lugar de en la memoria, o tener que configurar los buffers de comunicaciones del cliente y del servidor para manejar los tamaños de manera eficiente.
Los tamaños permitidos son:
TINYTEXT 255 (+1 byte overhead)
TEXT 64K - 1 (+2 bytes overhead)
MEDIUMTEXT 16M - 1 (+3 bytes overhead)
LONGTEXT 4G - 1 (+4 bytes overhead)
Aún tiene la falta de coincidencia de bytes / caracteres (de modo que una columna MEDIUMTEXT utf8
puede almacenar "solo" alrededor de medio millón de caracteres, (16M-1)/3 = 5,592,405
) pero aún así amplía considerablemente su rango.
también puede usar MEDIUMBLOB / LONGBLOB o MEDIUMTEXT / LONGTEXT
Un tipo BLOB en MySQL puede almacenar hasta 65,534 bytes, si intenta almacenar más de esta cantidad de datos, MySQL truncará los datos. MEDIUMBLOB puede almacenar hasta 16,777,213 bytes, y LONGBLOB puede almacenar hasta 4,294,967,292 bytes.
La longitud máxima de un varchar está sujeta al tamaño máximo de fila en MySQL, que es de 64 KB (sin contar los BLOB):
VARCHAR (65535) Sin embargo, tenga en cuenta que el límite es menor si utiliza un conjunto de caracteres de múltiples bytes:
VARCHAR (21844) SET DE PERSONAJES utf8
Tenga en cuenta que MySQL tiene un límite de tamaño máximo de fila
La representación interna de una tabla MySQL tiene un límite de tamaño máximo de fila de 65,535 bytes, sin contar los tipos BLOB y TEXT. Las columnas BLOB y TEXT solo contribuyen de 9 a 12 bytes hacia el límite de tamaño de fila porque su contenido se almacena por separado del resto de la fila. Lea más sobre los límites en el recuento de columnas de la tabla y el tamaño de las filas.
El tamaño máximo que puede ocupar una sola columna, es diferente antes y después de MySQL 5.0.3
Los valores en las columnas VARCHAR son cadenas de longitud variable. La longitud se puede especificar como un valor de 0 a 255 antes de MySQL 5.0.3 y de 0 a 65,535 en 5.0.3 y versiones posteriores. La longitud máxima efectiva de un VARCHAR en MySQL 5.0.3 y versiones posteriores está sujeta al tamaño máximo de fila (65.535 bytes, que se comparte entre todas las columnas) y al conjunto de caracteres utilizado.
Sin embargo, tenga en cuenta que el límite es menor si utiliza un conjunto de caracteres de múltiples bytes como utf8 o utf8mb4.
Utilice los tipos de TEXT
para superar el límite de tamaño de fila.
Los cuatro tipos de TEXTO son TINYTEXT, TEXT, MEDIUMTEXT y LONGTEXT. Estos corresponden a los cuatro tipos de BLOB y tienen las mismas longitudes máximas y requisitos de almacenamiento.
Más detalles sobre los tipos BLOB y TEXT.
- Ref. Para MySQLv8.0 https://dev.mysql.com/doc/refman/8.0/en/blob.html
- Ref para MySQLv5.7 http://dev.mysql.com/doc/refman/5.7/en/blob.html
- Ref para MySQLv5.6 http://dev.mysql.com/doc/refman/5.6/en/blob.html
- Ref para MySQLv5.5 http://dev.mysql.com/doc/refman/5.5/en/blob.html
- Ref para MySQLv5.1 http://dev.mysql.com/doc/refman/5.1/en/blob.html
- Ref para MySQLv5.0 http://dev.mysql.com/doc/refman/5.0/en/blob.html
Aún más
Verifique más detalles sobre los requisitos de almacenamiento de los tipos de datos que tratan los requisitos de almacenamiento para todos los tipos de datos.