记一次mysql配置参数导致的线上问题

早两天,我们的运维找到我,说是客户那边的反馈说在迁移私有云时数据库里的有些表数据刷不到我们的共享缓存当中去,我对比了了一下数据发现表中有七千多条数据,而刷到缓存中的数据只有大概一千条不到的数据,而且最后一条数据是不全的。于是快速的将代码拉出来撸了一下从表里取数据的sql,发现如下:

片段.png

我可以发现sql语句使用了group语句,那么group_concat的作用是什么呢?

group_concat(),手册上说明:该函数返回带有来自一个组的连接的非NULL值的字符串结果。

那么既然是一个结果集,我们想象会出现什么问题?聪明的同学可能已经猜到了,那就是结果太多导致结果集太长,从而会出现超长截断的问题,so,问题应该就好解决了,mysql中肯定有关于这个结果集的参数的设置,搜集资料可以发现使用这个语句我们可以看到当前的结果集的长度参数:

图片.png

于是我们可以将这个参数设置大一点,可以使用SET@@global.GROUP_CONCAT_MAX_LEN=1024000(或者将值设置成-1,表示最大值)来解决这个问题。

但是仔细一想,如果我们数据很多很多,超过了我们的最大值怎么办?其实这个临时办法是个解决方案,但是后期我们想保证不再出问题的时候,我们应该找一个通用的办法来解决这个问题,比如分页查询.欢迎大家提出更好的意见!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,678评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,779评论 18 399
  • //我所经历的大数据平台发展史(三):互联网时代 • 上篇http://www.infoq.com/cn/arti...
    葡萄喃喃呓语阅读 51,343评论 10 200
  • .数据库 数据库的发展: 文件系统(使用磁盘文件来存储数据)=>第一代数据库(出现了网状模型,层次模型的数据库)=...
    小Q逛逛阅读 1,010评论 0 2
  • 未经允许,不得擅自改动和转载 用Github有一两年了,是时候总结一下以前踩得坑了,这些坑开始时还真把自己摔得不轻...
    双愚阅读 1,378评论 0 4