json_value json_object json_modify example array mysql json

json_object - Longitud máxima de la columna JSON en MySQL



mysql json_modify (2)

¿Cuál es el número máximo de caracteres que puedo almacenar en una columna JSON en MySQL? No veo esto mencionado en el manual de MySQL.


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

Establezca el tamaño máximo de paquete 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 de 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 mayor valor que puede establecer para max_allowed_packet.


El tamaño de los documentos JSON almacenados en columnas JSON se limita al valor de la variable de sistema max_allowed_packet . (Si bien el servidor manipula un valor JSON internamente en la memoria, puede ser mayor; el límite se aplica cuando el servidor lo almacena).

Command-Line Format --max_allowed_packet=# System Variable Name max_allowed_packet Variable Scope Global, Session Dynamic Variable Yes Permitted Values Type integer Default 4194304 Min Value 1024 Max Value 1073741824