Здравствуйте, lumf, Вы писали:
L>тема достаточно избитая, но все же...
L>имеется куча потоков, которая вызывает одну и туже хранимку, которая там что-то сложное делает с базой.
L>вопрос 1: если бы в хранимке была лишь одна инструкция insert возник бы dead lock?
врядли возникнет
L>вопрос 2: если бы в хранимке была лишь одна инструкция update(причем каждый поток апдейтит уникальную запись) возник бы dead lock?
мало вероятно для одной записи, хотя все зависит от наличие индексов и условия апдейта.
L>вопрос 3: как наилучшим образом бороться, чтобы не растерять алюсы многопоточности? у меня два выхода: 1- блокировать mutex'om момент вызова процедуры; 2-ловить вот это
L>Transaction (Process ID 140) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
L>
L>и делать то что говорится, то бишь Rerun the transaction
почитай
здесьАвтор(ы): Алексей Ширшов
Дата: 15.11.2003
В статье рассказывается о уровнях изоляции транзакций и механизме блокировок, обеспечивающем поддержку этих уровней в СУБД MS SQL Server 2000. Предполагается, что читатель хорошо знаком с транзакциями и их свойствами.
и особенно
здесьАвтор(ы): Иван Бодягин
Дата: 05.05.2004
В статье рассматривается проблема взаимоблокировок, даются примеры успешного создания подобных ситуаций, а также их разрешения. Материал разбирается на примере MS SQLServer 2000.
Удачи.