Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / deadlocks / 10 сообщений из 10, страница 1 из 1
24.11.2010, 15:54
    #36974663
gda
gda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlocks
вот deadlock

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Checking ASE errorlog
Tue Nov  23   09 : 30 : 12  EST  2010 
Server=PROD_LIT2
Errorlog=/home1/dmlprd213/sybase/ASE-12_5/install/PROD_LIT2.log

 00 : 00000 : 00171 : 2010 / 11 / 22   12 : 24 : 03 . 52  server  Deadlock Id  144  detected
Deadlock Id  144 : detected.  1  deadlock chain(s) involved.
Deadlock Id  144 : Process (Familyid  0 , Spid  452 , Suid  7110 ) was executing a UPDATE command in the trigger 'uTranchePerf_trg' at line  24  at nested level  3 .
Deadlock Id  144 : Process  452  was involved in application 'DRAW'.
Deadlock Id  144 : Process  452  was involved on host name '<none>'.
Deadlock Id  144 : Process  452  was involved in transaction '$upd'.
Deadlock Id  144 : Process (Familyid  0 , Spid  171 , Suid  6450 ) was executing a SELECT command in the procedure 'sa_rmbs_tranche_custm' at line  221  at nested level  1 .
Deadlock Id  144 : Process  171  was involved in application '<none>'.
Deadlock Id  144 : Process  171  was involved on host name '<none>'.
Deadlock Id  144 : Process (Familyid  0 , Spid  171 ) was waiting for a 'shared page' lock on page  104909  of the 'TranchePerf_new' table in database  21  but process (Familyid  0 , Spid  452 ) already held a 'exclusive page' lock on it.
Deadlock Id  144 : Process (Familyid  0 , Spid  452 ) was waiting for a 'exclusive intent' lock on the 'tranche_master' table in database  21  but process (Familyid  0 , Spid  171 ) already held a 'shared intent' lock on it.
Deadlock Id  144 : Process (Familyid  0 , Spid  452 ) was chosen as the victim. End of deadlock information.

        1  Deadlock(s) found in errorlog for ASE server 'PROD_LIT2'

(end)

проблема получается в тригере uTranchePerf_trg. Вот текст тригера:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
create trigger uTranchePerf_trg
    on TranchePerf_new
   for update
as
BEGIN
     update tranche_master set
            curr_balance = case when tm.cash_flow='IO' then  0 . 0 
                                else isnull(convert(float,i.balance), 0 . 0 )
                           end,
            curr_date = i.reportingDate
       from dbo.tranche_master tm, inserted i
      where tm.tranche_id = i.inveInstId
        and i.reportingDate >=( select max( reportingDate )
                                from dbo.TranchePerf_new p (index x2)
                                where p.inveInstId = i.inveInstId )
        and i.reportingDate = ( select max( reportingDate )
                                from inserted i2
                                where i.inveInstId = i2.inveInstId )
        and (
               (tm.curr_balance IS NULL) OR
               (ABS(tm.curr_balance - isnull(i.balance,  0 . 0 )) >=  0 . 0001 )OR
               (tm.curr_date IS NULL) OR
               (tm.curr_date != i.reportingDate)
            )
END

Посоветуйте что можно зделать чтобы предотврать появления deadlock. Может на уровне тригера чтото надо менять. Если нужна ище какаито инфа спрашивайте, спасибо
...
Рейтинг: 0 / 0
24.11.2010, 16:58
    #36974941
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlocks
On 24.11.2010 15:54, gda wrote:

> Посоветуйте что можно зделать чтобы предотврать появления deadlock. Может на
> уровне тригера чтото надо менять. Если нужна ище какаито инфа спрашивайте, спасибо

Как водится, дедлок не возникает в одном процессе. Их нужно как минимум 2.
Поэтому хотелось бы знать, что делал в этот момент другой процесс.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
24.11.2010, 17:01
    #36974956
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlocks
On 24.11.2010 15:54, gda wrote:

> Deadlock Id*144*: Process (Familyid*0*, Spid*452*) was waitingfor a'exclusive intent' lock on the'tranche_master' table in database*21*

but process (Familyid*0*, Spid*171*) already held a'shared intent' lock on it.

> Deadlock Id*144*: Process (Familyid*0*, Spid*452*) was chosenas the victim.End of deadlock information.

> Посоветуйте что можно зделать чтобы предотврать появления deadlock. Может на

А часто возникает ? Сколько раз в день ?
Просто там наполовину на системных локах дедлок.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
24.11.2010, 17:49
    #36975129
gda
gda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlocks
често не знаю сколько раз ...
...
Рейтинг: 0 / 0
24.11.2010, 19:01
    #36975324
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlocks
On 24.11.2010 17:49, gda wrote:

> често не знаю сколько раз ...

Так считай. Если раз в пятелетку, то ничего делать не надо.
deadlock-и в принципе неизбежны в любой системе.
Если они совсем не мешают, то бороться с ними -- это всё равно,
что реку ковшиком вверх по течению носить и выливать.

Если не знаешь, сколько раз случается, то наверное оно
не часто, иначе знал бы от пользователей. А коли так, и
делать ничего не надо.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
24.11.2010, 23:27
    #36975716
kolchanov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlocks
Согласен с MasterZiv, с маленьким дополнением.
Возможно, на стороне клиента можно прозрачно для пользователя повесить обработку сообщения о deadlock, выполнить реконнект и заново попробовать выполнить транзакцию.
...
Рейтинг: 0 / 0
25.11.2010, 09:45
    #36976067
gda
gda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlocks
to kolchanov,

так оно и было попросил чтобы попробовал ище раз, проблема исчезла
...
Рейтинг: 0 / 0
25.11.2010, 10:48
    #36976256
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlocks
On 25.11.2010 9:45, gda wrote:

> так оно и было попросил чтобы попробовал ище раз, проблема исчезла

Три вещи, которые ты должен понимать на предмет dealdock-ов.

они неизбежны в многопользовательских системах. В частности, в СУБД.

возникновение их СЛУЧАЙНО.

приложение ВСЕГДА должно быть готово к их появлению, оно ОБЯЗАНО повторить
транзакцию ещё раз.



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
25.11.2010, 11:29
    #36976373
gda
gda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlocks
авторприложение ВСЕГДА должно быть готово к их появлению, оно ОБЯЗАНО повторить
транзакцию ещё раз.

как это сделать в моем случаи
...
Рейтинг: 0 / 0
25.11.2010, 11:34
    #36976400
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlocks
gda,

Добавить в приложение соотв. логику.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / deadlocks / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]