Вам нужно посмотреть, какие значения по умолчанию используются для тайм-аутов:
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)
Обычно я наблюдаю за несколькими переменными тайм-аута. Это очень важно, если вы используете MySQL удаленно из MySQL Workbench, клиента mysql или приложения PHP на сервере приложений, связываясь с MySQL на сервере БД.
Вот что говорит MySQL Documentation с этими настройками:
- wait_timeout (по умолчанию 28800 [8 часов]): количество секунд, в течение которых сервер ожидает активности на неинтерактивном соединении, прежде чем закрывать его. Этот тайм-аут применяется только к соединениям с файлами сокетов TCP / IP и Unix, но не к соединениям с использованием именованных каналов или общей памяти. При запуске потока значение сеанса wait_timeout инициализируется из глобального значения wait_timeout или из глобального значения interactive_timeout, в зависимости от типа клиента (как определено параметром соединения CLIENT_INTERACTIVE для mysql_real_connect ()). Смотрите также interactive_timeout.
- interactive_timeout (по умолчанию 28800 [8 часов]): количество секунд, в течение которых сервер ожидает активности на интерактивном соединении, прежде чем закрывать его. Интерактивный клиент определяется как клиент, который использует параметр CLIENT_INTERACTIVE для mysql_real_connect (). Смотрите также wait_timeout.
- net_read_timeout (по умолчанию 30): количество секунд ожидания для получения дополнительных данных из соединения перед прекращением чтения. Когда сервер читает с клиента, net_read_timeout - это значение времени ожидания, определяющее, когда следует прервать операцию. Когда сервер пишет клиенту, net_write_timeout - это значение времени ожидания, определяющее, когда следует прервать операцию. Смотрите также slave_net_timeout.
- net_write_timeout (по умолчанию 60): количество секунд ожидания записи блока в соединение перед прерыванием записи. Смотрите также net_read_timeout.
Пожалуйста, убедитесь, что эти тайм-ауты установлены достаточно высоко для размещения запросов, которые могут выполняться в течение очень длительного времени, которые могут включать:
- масса
UPDATEs
- масса
DELETEs
ENABLE KEYS
на большой MyISAM
Чтобы иметь дело с запросами, которые продолжают выполняться после того, как вы потеряли связь с ним, вы должны запустить KILL для идентификатора процесса долгосрочного запроса. Даже с помощью команды KILL вам придется ждать любого запроса, который находится в середине этапов, интенсивно использующих диск, или выполняющих внутренние мьютексы.