2014-12-06 2 views
0

У меня есть один вопрос относительно уровня изоляции транзакции и блокировки в mysql.READ COMMITTED время ожидания ожидания ожидания ожидания превышено

У меня есть один запрос продолжает получать ошибки тайм-аута блокировки:

java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction 

Запросы в основном стараются удалять записи с определенным date_id. BTW, индексируется дата_id. Но в большинстве случаев совпадений нет, т. Е. Ничего не будет удалять.

После некоторого расследования я обнаружил, что это может быть вызвано долговременным запросом злоумышленника, который выбирает диапазон в одной таблице. Однако то, что меня смутило, - это транзакция, выполняемая на уровне изоляции «READ COMMITTED». Поэтому я не знаю, почему требуется блокировка и почему это может быть тайм-аут (особенно считают, что нет соответствующей записи для удаления)

Спасибо заранее!

+0

Использовать 'SHOW INNODB STATUS', чтобы узнать, какой SQL-блок принадлежит вам? –

+0

Вы используете таблицы InnoDb или таблицы MyIsam? На MyIsam авторы блокируют читателей и наоборот, простое выражение SELECT помещает o блокировку всех таблиц, участвующих в запросе, и блокирует записи. – krokodilko

ответ

0

Изоляция транзакций «прочитанное» - это контракт: база данных обещает только прочитать данные, переданные в транзакцию, и не допустить передачи данных еще не выполненных транзакций. Ошибка таймаута блокировки - ошибка времени выполнения: база данных пытается обновить данные, но не может найти подходящего момента для этого (см. «Innodb_lock_wait_timeout», упомянутый here в справочном руководстве по MySQL). Даже если нет данных для удаления, база данных должна найти момент времени, чтобы утверждать это.

Изоляция транзакций «прочитанная» уже улучшает шансы базы данных на поиск подходящего момента для обновления данных (например, here), но не может запретить другим запросам/транзакциям блокировать всю таблицу («полное сканирование таблицы») как, вероятно, ваш опросчик).

Еще один поиск показывает possible solution для вашей проблемы с удалением.

Смежные вопросы