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

2020-02-24 11:39:46 浏览数 (1)

最近的错别字是越来越厉害,上一篇开头就是两个错别字,恨得我要死,不检查,并且一边写一边查让写的语句也变得像是 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 人点赞