Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите плз разобраться с дедлоком.  [new]
abrashka
Member

Откуда:
Сообщений: 517
День добрый!
Происходит не приятная ситуация, которую я к сожалению не знаю как разрулить :(
Есть таблица Crm.Clients, в нее относительно инденсивно вносятся новые данные и изменяются существующие.
В таблиеце есть 2 триггера after update и два триггера after insert.
В случае с апдейтом- триггеры trg_u_1 и trg_u_2 отправляют сообщения через Service Broker.
В случае с добавлением новой строки, оба триггера after insert(trg_i_1 и trg_i_2) отправляют различные сообщения через Service Broker.

Во время интенсивной работы с таблицей происходит взаимоблокировка такого плана, на сколько я понимаю, то речь идет о процессе 102, который пытается внести новые данные в таблицы, включая Crm.Clients, соответственно выскакивают триггеры trg_i_1 и trg_i_2, которые пытаются отправить сообщения, а процесс 86 изменяет строку в Crm.Clients, соответственно выскакивают триггеры на апдейт, которые в свою очередь тоже отсылают сообщения.

Судя по графу возникает взаимоблокировка строки в таблице sys.sysdesend, которую я не могу понять.
Если не сложно, объясните плз причину и как ее решить.
На сколько я понимаю, то напрашивается вариант объединения обоих триггеров в один, но во-первых не уверен или это решит проблему, а во вторых триггеры не связаны между собой и возможна ситуация, при которой один из них нужно будет отменить.
Спасибо!

Картинка с другого сайта.
6 янв 15, 12:51    [17088921]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с дедлоком.  [new]
abrashka
Member

Откуда:
Сообщений: 517
Вот такой вот лог:
+

2015-01-06 11:36:35.93 spid7s Deadlock encountered .... Printing deadlock information
2015-01-06 11:36:35.93 spid7s Wait-for graph
2015-01-06 11:36:35.93 spid7s
2015-01-06 11:36:35.93 spid7s Node:1

2015-01-06 11:36:35.93 spid7s KEY: 9:281474981429248 (7bd190b7e781) CleanCnt:2 Mode:X Flags: 0x1
2015-01-06 11:36:35.93 spid7s Grant List 1:
2015-01-06 11:36:35.93 spid7s Owner:0x00000002317A8100 Mode: X Flg:0x40 Ref:0 Life:02000000 SPID:102 ECID:0 XactLockInfo: 0x00000001445BB990
2015-01-06 11:36:35.93 spid7s SPID: 102 ECID: 0 Statement Type: SEND Line #: 6
2015-01-06 11:36:35.93 spid7s Input Buf: Language Event: (@__AuditId bigint)EXEC Infra.usp_SetContextInfo @inData=@__AuditId;
INSERT INTO Crm.Clients (clId,clHolderCompanyId,clIssuerCompanyId,clCreationDateTime,clCrmId,clDisplayNoneInClientAlerts,clLastUpdateDateTime,clStatusEnum,clTypeEnum,clCreationAuditId,c
2015-01-06 11:36:35.93 spid7s Requested by:
2015-01-06 11:36:35.93 spid7s ResType:LockOwner Stype:'OR'Xdes:0x00000003550738A0 Mode: U SPID:86 BatchID:2 ECID:0 TaskProxy:(0x00000002E53EE540) Value:0x32c0f6c0 Cost:(0/1280)
2015-01-06 11:36:35.93 spid7s
2015-01-06 11:36:35.93 spid7s Node:2

2015-01-06 11:36:35.93 spid7s KEY: 9:281474981429248 (aa08a4c19c8f) CleanCnt:2 Mode:X Flags: 0x1
2015-01-06 11:36:35.93 spid7s Grant List 3:
2015-01-06 11:36:35.93 spid7s Owner:0x00000002745D8480 Mode: X Flg:0x40 Ref:0 Life:02000000 SPID:86 ECID:0 XactLockInfo: 0x00000003550738E0
2015-01-06 11:36:35.93 spid7s SPID: 86 ECID: 0 Statement Type: SEND Line #: 14
2015-01-06 11:36:35.93 spid7s Input Buf: Language Event: (@__AuditId bigint)EXEC Infra.usp_SetContextInfo @inData=@__AuditId;
update Crm.clients set clCrmId=clLocalId where clId='b891e160-344e-409b-91ab-28db739f034d' and clHolderCompanyId=1
2015-01-06 11:36:35.93 spid7s Requested by:
2015-01-06 11:36:35.93 spid7s ResType:LockOwner Stype:'OR'Xdes:0x00000001445BB950 Mode: U SPID:102 BatchID:2 ECID:0 TaskProxy:(0x00000001DD944540) Value:0x20afd400 Cost:(0/1820)
2015-01-06 11:36:35.93 spid7s
2015-01-06 11:36:35.93 spid7s Victim Resource Owner:
2015-01-06 11:36:35.93 spid7s ResType:LockOwner Stype:'OR'Xdes:0x00000003550738A0 Mode: U SPID:86 BatchID:2 ECID:0 TaskProxy:(0x00000002E53EE540) Value:0x32c0f6c0 Cost:(0/1280)
2015-01-06 11:36:35.94 spid11s deadlock-list
2015-01-06 11:36:35.94 spid11s deadlock victim=processd20a8748
2015-01-06 11:36:35.94 spid11s process-list
2015-01-06 11:36:35.94 spid11s process id=processd20a8748 taskpriority=0 logused=1280 waitresource=KEY: 9:281474981429248 (7bd190b7e781) waittime=1 ownerId=239180054 transactionname=UPDATE lasttranstarted=2015-01-06T11:36:35.930 XDES=0x3550738a0 lockMode=U schedulerid=7 kpid=16044 status=suspended spid=86 sbid=2 ecid=0 priority=0 trancount=2 lastbatchstarted=2015-01-06T11:36:35.920 lastbatchcompleted=2015-01-06T11:36:35.780 clientapp=SRO App Server hostname=SRO-STRESS2 hostpid=13276 loginname=sa isolationlevel=read committed (2) xactid=239180054 currentdb=9 lockTimeout=4294967295 clientoption1=671227936 clientoption2=128056
2015-01-06 11:36:35.94 spid11s executionStack
2015-01-06 11:36:35.94 spid11s frame procname=CGB4991.Crm.trg_u_1 line=14 stmtstart=1182 stmtend=1764 sqlhandle=0x030009009b720f33d5aea80018a400000000000000000000
2015-01-06 11:36:35.94 spid11s SEND ON CONVERSATION '8C0E9EF1-EC93-E411-842B-D8D3856061E6' MESSAGE TYPE SroNotificationMessage(
'<TableDataChange Table="Crm.Clients" ChangeKind="UPDATE" CompanyId="'+ISNULL(CAST(@companyId AS nvarchar(20)),'') + '">'+ '<Column Name="clId">' + @col_clId + '</Column>'+ '</TableDataChange>')
2015-01-06 11:36:35.94 spid11s frame procname=adhoc line=2 stmtstart=140 sqlhandle=0x02000000c97fb714f0efcacaf5571ddff48186ebe9844bd2
2015-01-06 11:36:35.94 spid11s update Crm.clients set clCrmId=clLocalId where clId='b891e160-344e-409b-91ab-28db739f034d' and clHolderCompanyId=1
2015-01-06 11:36:35.94 spid11s frame procname=unknown line=1 sqlhandle=0x000000000000000000000000000000000000000000000000
2015-01-06 11:36:35.94 spid11s unknown
2015-01-06 11:36:35.94 spid11s inputbuf
2015-01-06 11:36:35.94 spid11s (@__AuditId bigint)EXEC Infra.usp_SetContextInfo @inData=@__AuditId;
2015-01-06 11:36:35.94 spid11s update Crm.clients set clCrmId=clLocalId where clId='b891e160-344e-409b-91ab-28db739f034d' and clHolderCompanyId=1
2015-01-06 11:36:35.94 spid11s process id=process5f6bc8 taskpriority=0 logused=1820 waitresource=KEY: 9:281474981429248 (aa08a4c19c8f) waittime=5 ownerId=239176525 transactionname=INSERT lasttranstarted=2015-01-06T11:36:32.733 XDES=0x1445bb950 lockMode=U schedulerid=4 kpid=8312 status=suspended spid=102 sbid=2 ecid=0 priority=0 trancount=2 lastbatchstarted=2015-01-06T11:36:32.727 lastbatchcompleted=2015-01-06T11:36:32.553 clientapp=SRO App Server hostname=SRO-STRESS2 hostpid=13276 loginname=sa isolationlevel=read committed (2) xactid=239176525 currentdb=9 lockTimeout=4294967295 clientoption1=671227936 clientoption2=128056
2015-01-06 11:36:35.94 spid11s executionStack
2015-01-06 11:36:35.94 spid11s frame procname=CGB4991.Crm.trg_i_2 line=6 stmtstart=528 sqlhandle=0x0300090090a883338ca650010ba400000000000000000000
2015-01-06 11:36:35.94 spid11s SEND ON CONVERSATION '1DF04144-9A8B-E411-842B-D8D3856061E6' MESSAGE TYPE SroNotificationMessage(
'<TableDataChange Table="Crm.Clients" ChangeKind="INSERT" CompanyId="'+ISNULL(CAST(@companyId AS nvarchar(20)),'') + '"/>');
2015-01-06 11:36:35.94 spid11s frame procname=adhoc line=2 stmtstart=140 stmtend=946 sqlhandle=0x0200000055bd01325c04b6e0297de600e1571656d15b1fd7
2015-01-06 11:36:35.94 spid11s INSERT INTO Crm.Clients (clId,clHolderCompanyId,clIssuerCompanyId,clCreationDateTime,clCrmId,clDisplayNoneInClientAlerts,clLastUpdateDateTime,clStatusEnum,clTypeEnum,clCreationAuditId,clLastUpdateAuditId,clIsHidden,clIsGroupLeader,clDoNotMerge,clIsUnconfirmed) VALUES (N'b1175669-56b0-43c7-9a0b-969967eb3b04',1,1,{ ts '2015-01-06 09:37:04' },N'0',0,{ ts '2015-01-06 09:37:04' },10,1,1091,1091,1,1,0,1);
2015-01-06 11:36:35.94 spid11s frame procname=unknown line=1 sqlhandle=0x000000000000000000000000000000000000000000000000
2015-01-06 11:36:35.94 spid11s unknown
2015-01-06 11:36:35.94 spid11s inputbuf
2015-01-06 11:36:35.94 spid11s (@__AuditId bigint)EXEC Infra.usp_SetContextInfo @inData=@__AuditId;
2015-01-06 11:36:35.94 spid11s INSERT INTO Crm.Clients (clId,clHolderCompanyId,clIssuerCompanyId,clCreationDateTime,clCrmId,clDisplayNoneInClientAlerts,clLastUpdateDateTime,clStatusEnum,clTypeEnum,clCreationAuditId,clLastUpdateAuditId,clIsHidden,clIsGroupLeader,clDoNotMerge,clIsUnconfirmed) VALUES (N'b1175669-56b0-43c7-9a0b-969967eb3b04',1,1,{ ts '2015-01-06 09:37:04' },N'0',0,{ ts '2015-01-06 09:37:04' },10,1,1091,1091,1,1,0,1);
2015-01-06 11:36:35.94 spid11s INSERT INTO Crm.Customers (cuCardId,cuGenderEnum,cuIsHouseholdRepresentative,cuFirstName,cuLastName,cuSearchableFirstName,cuSearchableLastName,cuIsDeceased,cuTitleId,cuClientId,cuHolderCompanyId) VALUES (N'',0,0,N'Eli',N'Naftali',N'Eli',N'Naftali',0,N'a6750716-d727-498e-90d6-76cddd191216',N'b1175669-56b0-43c7-9a0b-969967eb3b04',1);
2015-01-06 11:36:35.94 spid11s INSERT INTO Crm.ContactDetails (cndtId,cndtHolderCompanyId,cndtIssuerCompanyId,cndtDetail,cndtSearchableDetail,cndtIsPrimary,cndtClientId,cndtTypeId) VALUES (N'a8e97fb7-631a-423a-9581-645075887c11',1,1,N'1420537003
2015-01-06 11:36:35.94 spid11s resource-list
2015-01-06 11:36:35.94 spid11s keylock hobtid=281474981429248 dbid=9 objectname=CGB4991.sys.sysdesend indexname=cl id=lock111039a00 mode=X associatedObjectId=281474981429248
2015-01-06 11:36:35.94 spid11s owner-list
2015-01-06 11:36:35.94 spid11s owner id=process5f6bc8 mode=X
2015-01-06 11:36:35.94 spid11s waiter-list
2015-01-06 11:36:35.94 spid11s waiter id=processd20a8748 mode=U requestType=wait
2015-01-06 11:36:35.94 spid11s keylock hobtid=281474981429248 dbid=9 objectname=CGB4991.sys.sysdesend indexname=cl id=locka9f00800 mode=X associatedObjectId=281474981429248
2015-01-06 11:36:35.94 spid11s owner-list
2015-01-06 11:36:35.94 spid11s owner id=processd20a8748 mode=X
2015-01-06 11:36:35.94 spid11s waiter-list
2015-01-06 11:36:35.94 spid11s waiter id=process5f6bc8 mode=U requestType=wait
6 янв 15, 13:11    [17088971]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с дедлоком.  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
abrashka,

Для удобства окружающих выкладывайте планы в виде xml or sqlplan in attach.
6 янв 15, 15:21    [17089408]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плз разобраться с дедлоком.  [new]
abrashka
Member

Откуда:
Сообщений: 517
NickAlex66
abrashka,

Для удобства окружающих выкладывайте планы в виде xml or sqlplan in attach.

Сорри, не подумал...
Добавил аналогичный план в XML.

Спасибо!

К сообщению приложен файл (Plan.xml - 15Kb) cкачать
6 янв 15, 15:39    [17089504]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить