Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
старая как мир ошибка ожидания пользовательского ввода внутри транзакции или чтение файлика из сети.
Совет «делайте транзакции короче» — нет. Никто в здравом уме не будет делать транзакции длиннее чем нужно. И наоборот — короче чем есть транзакцию сделать нельзя, потому что бизнес требует, чтобы определённые операции выполнялись в единой транзакции.
2) Транзакция№2 пытается получить блокировку типа X и… начинает ждать когда Транзакция№1 освободит блокировку S
3) Транзакция№1 пытается получить блокировку типа X и… начинает ждать когда Транзакция№2 получит блокировку типа X и освободит её
Мне кажется есть вариант получше — сразу получать блокировку типа X.
insert into t2 select * from t1;
А при ReadUncommitted
При уровне изоляции Serializable чтение точно также выставит X (эксклюзивную) блокировку
Вопрос почему могут возникать "Deadlock found" если нигде в явном виде не используется "LOCK IN SHARE MODE" ? Эти локи типа S могут создаваться при insert,select,update,delete автоматически?
Немного про Deadlock