最近的错别字是越来越厉害,上一篇开头就是两个错别字,恨得我要死,不检查,并且一边写一边查让写的语句也变得像是 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 在复制查询上的差距有多少,这个要好好看一看,要不怎么和领导提出要升级的要求。