什么是MySQL';s wait_timeout、net_read_timeout和net_write_timeout变量?
我正在执行批量插入并获取错误,错误为什么是MySQL';s wait_timeout、net_read_timeout和net_write_timeout变量?,mysql,Mysql,我正在执行批量插入并获取错误,错误为Mysql2::error:查询期间与MySQL服务器的连接丢失: 我在互联网和大多数要求增加net\u read\u timeout值的博客/文章中搜索了这个错误 我在互联网上搜索了net\u read\u timeout,但没有找到任何用易懂语言描述它的文章/博客。 在MySQL网站上,net_read_timeout被描述为“在中止读取之前等待来自连接的更多数据的秒数”。我完全被这句话搞糊涂了,不明白 我还想了解net_write_timeout和wai
Mysql2::error:查询期间与MySQL服务器的连接丢失:
我在互联网和大多数要求增加net\u read\u timeout
值的博客/文章中搜索了这个错误
我在互联网上搜索了net\u read\u timeout
,但没有找到任何用易懂语言描述它的文章/博客。
在MySQL网站上,net_read_timeout被描述为“在中止读取之前等待来自连接的更多数据的秒数”
。我完全被这句话搞糊涂了,不明白
我还想了解net_write_timeout和wait_timeout变量。MySQL在不同阶段使用不同的超时变量
- 当建立连接时,它使用
connection\u timeout
- 当它等待下一个查询时,它使用
wait\u timeout
- 当它在特定时间内没有收到查询时,它使用
和net\u read\u timeout
net\u write\u timeout
- 等等
net\u read\u timeout
应该不是问题,但是当您遇到一些网络问题时,特别是在与服务器通信时,可能会引发此超时,因为您发送到数据库的查询不是单个数据包,MySQL会等待整个查询被读取,但是由于网络问题,它不接收查询的其余部分。MySQL不允许客户端在完全获取查询结果之前与服务器对话
您无法正确更改这两个变量,毕竟这两个变量都是变量
也可以从MySQL文档中读取
net\u read\u超时
:
中止读取之前等待连接中更多数据的秒数。当服务器从客户端读取数据时,net_read_timeout是控制何时中止的超时值。当服务器向客户端写入时,net_write_timeout是控制何时中止的超时值。另请参见从属网络超时
net\u write\u超时
:
中止写入之前,等待块写入连接的秒数。另请参见网络读取超时
您可以使用
>mysql显示“%timeout”之类的变量代码>我了解等待超时设置。mysql默认等待超时为28800秒,即8小时。现在,要了解wait_timeout是如何工作的,请执行以下sql语句
设置等待超时=10
执行上述语句后,如果mysql服务器在10秒内未收到任何sql语句,则会自动关闭连接
要测试它,请等待10秒,然后执行任何sql查询,它将给您带来类似“查询执行期间mysql关闭连接”的错误
将很快更新我对net_read_timeout和net_write_timeout的回答。当您使用到mysql数据库的非缓冲连接,并且在执行查询后,您没有使用数据时,会发生这种情况。
客户机python连接与非缓冲SSDictCursor
connection = pymysql.connect(host='localhost',
user='xxxx',
password='xxxx',
db='employees',
charset='utf8mb4',
cursorclass=pymysql.cursors.SSDictCursor)
sql = " select * from employees"
cursor = connection.cursor()
cursor.execute(sql)
cursor.fetchone()
不执行任何操作,您的连接将超时
或
如果未在60秒内(净写入超时)获取所有数据,您的连接将被中止。
引用文件:
当服务器向客户端写入时,net_write_timeout是控制何时中止的超时值
2019-08-14T15:20:26.465498Z 28440查询从员工中选择*
2019-08-14T15:21:26.584634Z 28440[注]中止了28440到db的连接:“员工”用户:“xxxx”主机:“本地主机”(写入通信数据包超时)我将等待超时设置为30秒,并执行查询“选择睡眠(40)”,该查询睡眠40秒,然后我应该得到等待超时错误,但我仍然没有得到等待超时错误。你能给我举个例子,说明如何手动引发等待超时、净读超时和净写超时异常,以便我能更好地理解它。这有点奇怪,你有没有试过对我的答案进行查询?是的,我试过,它显示了不同变量的超时值,没有其他内容。你能给我举个例子来手动提高wait_timeout和net_read_timeout错误吗?我有一个类似的问题,我的站点一直在下降,因为有这么多的插入正在发生在数据库中,我该如何改进?