Quel est le nombre maximum de caractères que je peux stocker dans une colonne JSON dans MySQL? Je ne vois pas cela mentionné dans le manuel MySQL.
Voici une démonstration de ce dont @ JorgeLondoño parle.
Définissez la taille de paquet maximale autorisée du serveur:
mysql> set global max_allowed_packet=1024*1024*1024;
Quittez et ouvrez à nouveau le client mysql, en définissant cette fois la taille maximale du paquet client pour correspondre:
$ mysql --max-allowed-packet=$((1024*1024*1024*))
Créez une table de test avec une colonne JSON et remplissez-la avec le document JSON le plus long possible:
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 |
+-----------+
Cela montre que j'ai pu créer un seul document JSON avec 100 millions d'éléments, et MySQL le stocke dans environ 800 Mo.
Je n'ai pas essayé un document plus long. Je suppose qu'il atteint 1 Go au maximum, ce qui est la plus grande valeur que vous pouvez définir pour max_allowed_packet.
La taille des documents JSON stockés dans les colonnes JSON est limitée à la valeur de max_allowed_packet
variable système. (Bien que le serveur manipule une valeur JSON en interne en mémoire, elle peut être plus grande; la limite s'applique lorsque le serveur la stocke.)
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