Тайм-аут ожидания блокировки innodb - PullRequest
2 голосов
/ 08 марта 2010

Согласно приведенной ниже ссылке на документацию:

Когда происходит тайм-аут ожидания блокировки, текущий оператор не выполняется. Текущая транзакция не откатывается. (До тех пор, пока MySQL 5.0.13 InnoDB не откатил всю транзакцию, если произошло время ожидания блокировки. Вы можете восстановить это поведение, запустив сервер с параметром --innodb_rollback_on_timeout, доступным с MySQL 5.0.32.

http://dev.mysql.com/doc/refman/5.0/en/innodb-parameters.html#sysvar_innodb_lock_wait_timeout

Означает ли это, что при превышении времени ожидания блокировки это нарушает целостность транзакции? «Роллбэк на тайм-аут» был поведением по умолчанию до 5.0.13, и я думаю, что это был правильный способ справиться с такими ситуациями. Кто-нибудь считает, что это должно быть поведение по умолчанию, и пользователь не должен просить добавить параметр для функциональности, которая воспринимается как должное?

1 Ответ

2 голосов
/ 08 марта 2010

Он не ставит под угрозу ссылочную целостность - он просто дает вам возможность либо повторить попытку, либо сделать что-то еще, например, выполнение завершенной работы или откат.

Для небольших транзакций и для простоты вы также можете включить опцию отката по тайм-ауту. Однако, если вы выполняете транзакции в течение многих часов, вы можете по достоинству оценить возможность отреагировать на тайм-аут.

...