Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
deadlocks
|
|||
|---|---|---|---|
|
#18+
Вопрос заключается в следующем, можно ли в принципе при помощи АДО смоделировать ситуацию дедлока? Проблема здесь заключается в том, что 2 апдэйта внутри одной транзакции АДО порождают 2 процесса в SQL server'е и выброса ошибки 1205 не происходит, вместо этого оба заблокированных запроса благополучно вылетают с таймаутом, хотя ситуация, вообще говоря, типичная deadlock'овая. 1-я транзакция update a set id = id where id = 5 update b set id = id where id = 5 2-я транзакция update b set id = id where id = 5 update a set id = id where id = 5 соответственно вторые запросы, в каждой транзакции не смогут быть выполнены, если к этому моменту уже завершились первые, но deadlockа не происходит :0(. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2002, 20:57 |
|
||
|
deadlocks
|
|||
|---|---|---|---|
|
#18+
Есть идея, что всё это происходит если использовать адошные методы для открытия и закрытия транзакции, а они вызывают SET IMPLICIT_TRANSACTIONS ON, что приводит к тому, что каждый update делается в своей транзакции, которые правда коммитиятся или откатываются одновременно, т.е. фактически это поведение вложенных транзакций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2002, 21:28 |
|
||
|
deadlocks
|
|||
|---|---|---|---|
|
#18+
Без разницы чем моделировать ситуацию с deadlock'ом. ADO, не ADO... Все равно работа с транзакциями идет на уровне сиквела. Ну, например, сделайте тестик на VB, поместив на форму 6 кнопок - "start transaction", "work", "end transaction" для 1-й транзакции и тоже самое для 2-й. Глобально определяем 2 переменные-коннекты и на кнопки привешиваем соответствующую обработку. На work - апдейты, на остальные понятно что. Ну и соответственно давим их в следующем порядке - "start tran 1" "start tran 2" "work 1" "work 2" "end tran 1" "end tran 2" Должно появиться сообщение о дедлоке. То же самое можно сделать через Query Analizer, в качестве глобальных коннектов используя 2 подключения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2002, 06:53 |
|
||
|
deadlocks
|
|||
|---|---|---|---|
|
#18+
Скорее всего проблема в том, что в свойтсвах Command у вас выставлен таймаут по умолчанию (30 сек). А дедлок определяется обычно SQL-сервером с более длинным интервалом. Клиент просто не успевает дождаться сообщения о дедлоке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.02.2002, 17:51 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3505&tid=1823913]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
35ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
2ms |
| others: | 215ms |
| total: | 317ms |

| 0 / 0 |
