V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
phony2r
V2EX  ›  MySQL

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

  •  
  •   phony2r · 2021-03-10 17:18:31 +08:00 · 1114 次点击
    这是一个创建于 1133 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    [mysqld]
    group_concat_max_len = 65535
    

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

    2 条回复    2021-03-15 11:07:22 +08:00
    ch2
        1
    ch2  
       2021-03-10 18:27:00 +08:00
    功能:将 group by 产生的同一个分组中的值连接起来,返回一个字符串结果
    group by 是一个非常消耗性能的操作,不止 mysql,mongo 也有一大堆限制,你分组里的结果如果太多了分分钟内存就溢出了,所以默认有个限制
    zhangysh1995
        2
    zhangysh1995  
       2021-03-15 11:07:22 +08:00
    假设一组里面的一个数据是 1 字节,那么 65535 * 1B =0.065535 MB, 如果数据行数 * 100 (六百万也不多吧), 那就是 65+MB 。然而实际数据不可能这么小,同时还有多个组,内存可能就爆了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1005 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:06 · PVG 06:06 · LAX 15:06 · JFK 18:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.