sql >> Base de Datos >  >> RDS >> Mysql

Longitud máxima de columna JSON en MySQL

Aquí hay una demostración de lo que está hablando @JorgeLondoño.

Establezca el tamaño de paquete máximo permitido del servidor:

mysql> set global max_allowed_packet=1024*1024*1024;

Salga y abra el cliente mysql nuevamente, esta vez configurando el tamaño máximo del paquete del cliente para que coincida:

$ mysql --max-allowed-packet=$((1024*1024*1024*))

Cree una tabla de prueba con una columna JSON y rellénela con el documento JSON más largo que pueda:

mysql> create table test.jtest ( j json );

mysql> insert into test.jtest 
  set j = concat('[', repeat('"word",', 100000000), '"word"]');
Query OK, 1 row affected (1 min 49.67 sec)

mysql> select length(j) from test.jtest;
+-----------+
| length(j) |
+-----------+
| 800000008 |
+-----------+

Esto muestra que pude crear un solo documento JSON con 100 millones de elementos, y MySQL lo almacena en aproximadamente 800 MB.

No probé un documento más largo. Supongo que alcanza un máximo de 1 GB, que es el valor más grande que puede establecer para max_allowed_packet.