Хабр Курсы для всех
РЕКЛАМА
Большая витрина: от крупнейших школ до частных авторов. Сравнивайте по цене, длительности, формату и выбирайте самый подходящий курс!
старая как мир ошибка ожидания пользовательского ввода внутри транзакции или чтение файлика из сети.
Совет «делайте транзакции короче» — нет. Никто в здравом уме не будет делать транзакции длиннее чем нужно. И наоборот — короче чем есть транзакцию сделать нельзя, потому что бизнес требует, чтобы определённые операции выполнялись в единой транзакции.
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