Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Транзакции в InnoDB - как отследить зависшую? / 2 сообщений из 2, страница 1 из 1
28.03.2015, 22:55:09
    #38920115
KaPuS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции в InnoDB - как отследить зависшую?
Здравствуйте.

Запускаю первую транзакцию (1-ая консоль) без коммита:
Код: sql
1.
2.
START TRANSACTION
SELECT id FROM table WHERE id = 100 FOR UPDATE



Запускаю вторую транзакцию (2-ая консоль):
Код: plsql
1.
2.
START TRANSACTION
SELECT id FROM table WHERE id = 100 FOR UPDATE



Как и ожидалось, вторая транзакция зависает и через 50 сек выкидывает ошибку: "ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction".

После этого, ни одна транзакция не сможет прочитать SELECT id FROM table WHERE id = 100 FOR UPDATE, и никаким запросом не обновить колонки ряда с id 100, пока первая транзакция не будет закоммичена или не разорвать соединение первой консоли с MySQL.

Вопрос: как можно отследить проблему, увидеть незавершенные "висящие" транзакции и как их откатить или завершить (перезапуск MySQL, просьба, не предлагать).
...
Рейтинг: 0 / 0
28.03.2015, 23:33:15
    #38920150
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Транзакции в InnoDB - как отследить зависшую?
KaPuS,

В доке упоминается Lock Monitor . Посмотрите, может, что-то подойдет.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Транзакции в InnoDB - как отследить зависшую? / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]