线上有个 bug, 排查后发现是因为 group_concat 会截取一部分文本, 网上查了下发现 MySQL group_concat 默认长度是 1024, 需要主动修改才能支持更大的长度, 比如修改 mysqld 的配置文件
[mysqld]
group_concat_max_len = 65535
但是没理解 MySQL 为什么要添加长度限制?
1
ch2 2021-03-10 18:27:00 +08:00
功能:将 group by 产生的同一个分组中的值连接起来,返回一个字符串结果
group by 是一个非常消耗性能的操作,不止 mysql,mongo 也有一大堆限制,你分组里的结果如果太多了分分钟内存就溢出了,所以默认有个限制 |
2
zhangysh1995 2021-03-15 11:07:22 +08:00
假设一组里面的一个数据是 1 字节,那么 65535 * 1B =0.065535 MB, 如果数据行数 * 100 (六百万也不多吧), 那就是 65+MB 。然而实际数据不可能这么小,同时还有多个组,内存可能就爆了
|