У меня есть один вопрос относительно уровня изоляции транзакции и блокировки в mysql.READ COMMITTED время ожидания ожидания ожидания ожидания превышено
У меня есть один запрос продолжает получать ошибки тайм-аута блокировки:
java.sql.SQLException: Lock wait timeout exceeded; try restarting transaction
Запросы в основном стараются удалять записи с определенным date_id. BTW, индексируется дата_id. Но в большинстве случаев совпадений нет, т. Е. Ничего не будет удалять.
После некоторого расследования я обнаружил, что это может быть вызвано долговременным запросом злоумышленника, который выбирает диапазон в одной таблице. Однако то, что меня смутило, - это транзакция, выполняемая на уровне изоляции «READ COMMITTED». Поэтому я не знаю, почему требуется блокировка и почему это может быть тайм-аут (особенно считают, что нет соответствующей записи для удаления)
Спасибо заранее!
Использовать 'SHOW INNODB STATUS', чтобы узнать, какой SQL-блок принадлежит вам? –
Вы используете таблицы InnoDb или таблицы MyIsam? На MyIsam авторы блокируют читателей и наоборот, простое выражение SELECT помещает o блокировку всех таблиц, участвующих в запросе, и блокирует записи. – krokodilko