Anda perlu melihat nilai default apa yang ada untuk timeout:
mysql> show variables like '%timeout';
+----------------------------+-------+
| Variable_name | Value |
+----------------------------+-------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| innodb_lock_wait_timeout | 50 |
| innodb_rollback_on_timeout | OFF |
| interactive_timeout | 60 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 60 |
+----------------------------+-------+
10 rows in set (0.00 sec)
Biasanya, saya menonton beberapa variabel timeout. Ini sangat penting jika Anda menggunakan MySQL dari jauh dari MySQL Workbench, klien mysql, atau aplikasi PHP pada server aplikasi yang menghubungi MySQL pada DB Server.
Inilah yang dikatakan Dokumentasi MySQL salah satu pengaturan ini:
- wait_timeout (Default 28800 [8 jam]): Jumlah detik server menunggu aktivitas pada koneksi non-aktif sebelum menutupnya. Batas waktu ini hanya berlaku untuk koneksi file TCP / IP dan Unix socket, tidak untuk koneksi yang dibuat menggunakan pipa bernama, atau memori bersama. Saat memulai utas, nilai sesi wait_timeout diinisialisasi dari nilai wait_timeout global atau dari nilai interactive_timeout global, tergantung pada jenis klien (sebagaimana ditentukan oleh opsi koneksi CLIENT_INTERACTIVE ke mysql_real_connect ()). Lihat juga interactive_timeout.
- interactive_timeout (Default 28800 [8 jam]): Jumlah detik server menunggu aktivitas pada koneksi interaktif sebelum menutupnya. Klien interaktif didefinisikan sebagai klien yang menggunakan opsi CLIENT_INTERACTIVE untuk mysql_real_connect (). Lihat juga wait_timeout.
- net_read_timeout (Default 30): Jumlah detik untuk menunggu lebih banyak data dari koneksi sebelum membatalkan pembacaan. Ketika server membaca dari klien, net_read_timeout adalah nilai batas waktu yang mengontrol kapan harus dibatalkan. Ketika server menulis ke klien, net_write_timeout adalah nilai batas waktu yang mengontrol kapan harus dibatalkan. Lihat juga slave_net_timeout.
- net_write_timeout (Default 60): Jumlah detik untuk menunggu blok ditulis ke koneksi sebelum membatalkan penulisan. Lihat juga net_read_timeout.
Harap pastikan batas waktu ini disetel cukup tinggi untuk mengakomodasi permintaan yang mungkin berjalan untuk waktu yang sangat lama, yang mungkin termasuk:
- Massa
UPDATEs
- Massa
DELETEs
ENABLE KEYS
pada MyISAM Besar
Untuk menangani kueri yang terus berjalan setelah Anda kehilangan kontak dengannya, Anda harus menjalankan KILL terhadap proses ID dari permintaan yang berjalan lama. Bahkan dengan perintah KILL, Anda harus menunggu permintaan apa pun yang ada di tengah langkah-langkah intensif disk atau memiliki mutex internal yang sedang berlangsung.