MySQL中的Max JSON列长度

时间:2016-11-21 00:28:26

标签: mysql json

我可以在MySQL的JSON列中存储的最大字符数是多少?我没有在MySQL手册中看到这一点。

2 个答案:

答案 0 :(得分:28)

以下是@JorgeLondoño正在谈论的内容的演示。

设置服务器的最大允许数据包大小:

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

再次退出并打开mysql客户端,这次将客户端最大数据包大小设置为匹配:

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

使用JSON列创建一个测试表,并用最长的JSON文档填充它:

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 |
+-----------+

这表明我能够创建一个包含1亿个元素的单个JSON文档,并且MySQL以大约800MB的速度存储它。

我没有尝试更长的文件。我假设它最大为1 GB,这是你可以为max_allowed_pa​​cket设置的最大值。

答案 1 :(得分:15)

存储在JSON列中的JSON文档的大小限制为max_allowed_packet系统变量的值。 (虽然服务器在内存中内部操纵JSON值,但它可能更大;当服务器存储时,该限制适用。)

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