MySQLは、さまざまな段階でさまざまなタイムアウト変数を使用します。
- 接続が確立されると、
connection_timeoutが使用されます - 次のクエリを待機するときは、
wait_timeoutを使用します - 特定の時間内にクエリを受信しない場合は、
net_read_timeoutを使用します およびnet_write_timeout - など...
通常、net_read_timeout 問題はないはずですが、ネットワークに問題がある場合、特にサーバーと通信している場合、データベースに送信したクエリの単一パケットではなく、MySQLがクエリ全体を待機するため、このタイムアウトが発生する可能性があります。読み取りますが、ネットワークの問題により、残りのクエリを受信しません。 MySQLは、クエリ結果が完全にフェッチされるまで、クライアントがサーバーと通信することを許可しません。
結局のところ、セッション変数であるこれら2つの変数を適切に変更することはできません。
また、MySQLDocから読むことができます
net_read_timeout :
net_write_timeout :
を使用して、MySQL自体のデフォルト変数を確認できます。
> mysql show variables like '%timeout';