MySQL group_concat 为什么会有长度限制?

2021-03-10 17:18:31 +08:00
 phony2r

线上有个 bug, 排查后发现是因为 group_concat 会截取一部分文本, 网上查了下发现 MySQL group_concat 默认长度是 1024, 需要主动修改才能支持更大的长度, 比如修改 mysqld 的配置文件

[mysqld]
group_concat_max_len = 65535

但是没理解 MySQL 为什么要添加长度限制?

1218 次点击
所在节点    MySQL
2 条回复
ch2
2021-03-10 18:27:00 +08:00
功能:将 group by 产生的同一个分组中的值连接起来,返回一个字符串结果
group by 是一个非常消耗性能的操作,不止 mysql,mongo 也有一大堆限制,你分组里的结果如果太多了分分钟内存就溢出了,所以默认有个限制
zhangysh1995
2021-03-15 11:07:22 +08:00
假设一组里面的一个数据是 1 字节,那么 65535 * 1B =0.065535 MB, 如果数据行数 * 100 (六百万也不多吧), 那就是 65+MB 。然而实际数据不可能这么小,同时还有多个组,内存可能就爆了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/760406

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX