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';