MySQL Sending data 查询数据慢

项目场景:

项目中总是有查询很慢的时候 相当于就是Sending data数据的时候很慢


问题描述:

这时候我们就要看他的处理过程了

show processlist;

这时可以查看他的 State 状态,他的状态可能是 Sending data
这是MySQL在做 “收集 + 发送 数据”;

在进一步排查

show profile;

这时候就看Duration哪里耗时最长
哪里耗时最长就是哪里的问题
一般是Sending data

也可以这样看一下

explain select * from table;

排查对比:

1. 表的设计一个字段为 XXX varchar(6000) DEFAULT NULL,而且该表中也有text类型为空的字段
2. 连表查询数据量大


原因分析:

  • 当Innodb的存储格式是 ROW_FORMAT=COMPACT (or ROW_FORMAT=REDUNDANT)的时候,Innodb只会存储前768字节的长度,剩余的数据存放到“溢出页”中。
show table status;

在这里插入图片描述

其实就是如果varchar类型如果长度过大的话,而且还是空的话,他会去比较,所以慢了

而且text类型也是会影响MySQL查询时候的速度,如果不是特殊情况最好不用


解决方案:

  1. 必要的查询时候去掉XXX字段查询,这是可以提高一下效率,设计的时候也最好不给长度过大。
  2. 像这种字段最好给 双引号 ’ ’ Empty String 这样会好一些
  3. 将该字段抽离出来,放到另外一张表里面,根据业务情况来定。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值