Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Дедлок в транзакции с select for update (Андрей) 08/02/2010 - 18:04:45



From: Андрей - 08/02/2010 - 18:04:45
Subject:Дедлок в транзакции с select for update
-----------------
Доброго времени суток.

Есть innodb-таблица с условной структурой
`id` int(10) unsigned NOT NULL,
`val` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)

В транзакции происходит следующая последовательность запросов(ветвления и проверки не указываю):

START TRANSACTION
SELECT * FROM tbl_name WHERE id = <id элемента> FOR UPDATE
(и в случае отсутствия записи)
INSERT INTO tbl_name (id, val) VALUES (<id элемента>, <val элемента>)
COMMIT

В случае параллельного выполнения нескольких транзакций даже с РАЗНЫМИ id, ОТСУТСТВУЮЩИМИ В ТАБЛИЦЕ, происходит дедлок при insert во второй транзакции. При этом лока таблицы ожидаемо(innodb все-таки) не происходит - параллельный insert вне транзакции проходит.

Хотелось бы понять, почему происходит дедлок и механику работы select for update и транзакционного механизма в целом в данном случае.

Заранее спасибо.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
36750



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |