MYSQL 复杂查询超时连接 lost Error 与 错别字

最近的错别字是越来越厉害,上一篇开头就是两个错别字,恨得我要死,不检查,并且一边写一边查让写的语句也变得像是 translation的。所以最近在反思,数量和质量之间的问题,每周5天,天天一篇,虽然说坚持就是胜利,胜利我没看见,错别字是越来越多了。所以后期可能会更加注重质量,至少错别字的问题的好好的关注一下,有可能一周就不是5篇,会开始降低数量,提高质量,希望从这篇开始。

使用MYSQL复杂查询的用法比较少见,都知道MYSQL在处理OLAP 以及复杂的语句的能力,在处理复杂的语句时有可能会看到下面的情况。

结果没出来,直接就 Lost connection to MySQL server during query

而在MYSQL 的本地执行语句,就没有类似报错。

下面经过调整后,就可以查询出来,不会再有 Error Code 2013, Lost connection to Mysql server during query 的报错了。

那么问题在哪里,就需要从两个方面来看

1  服务端

2  客户端

从服务端来看有几个要注意的地方

1 connect_timeout

这是一个在终止连接前等待传输package的秒数 默认只有10秒钟

2 net_read_timeout

当网络问题,例如MYSQL服务器和客户端之间的查询因为等待要终止读操作,net_read_timeout是控制这个超时的时间,尤其在返回大量数据的情况下。

3 max_allowed_packet 这个参与默认是16MB,一次发送的包大于这个数字,就会被终止连接(一般来说因为这个造成的Client and server 之间的断开比较少见,如果多见就请看看是不是对MYSQL的使用有误解)

很多人在调整了这些参数后还是发现,(例子里面使用 workbench)还是查询失败,还是30秒就自动断开。

那就的看看你使用的客户端的设置了,此例以

可以参考图上的一些数字设置,尤其

DBMS connection read timeout interval 和 DBMS connection timeout intrval 这两个参数。

以上的例子中,仅仅是在服务器端,将net_read_timeout 的时间从30秒增加到 900秒, 在客户端上将 DBMS connection read timeout interval 调整了。比较慢的查询就可以通过客户端进行显示了。

以上例子在 MYSQL 5.7.23  与 MYSQL 8.018 是可以的,随着MYSQL 8 开始应用,到底MYSQL 5.7 和 MYSQL 8 在复制查询上的差距有多少,这个要好好看一看,要不怎么和领导提出要升级的要求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值