Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / deadlock - при обычном SELECT-e / 4 сообщений из 4, страница 1 из 1
05.01.2022, 20:58
    #40124882
zindur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock - при обычном SELECT-e
Добрый день гуру ...

Последнее время появились много deadlock-ов на обычном селекте, Дев повысили число тредов (30)...
Пробовал емулировать на тест сервере - хоть 100 тредов запускаю никаких deadlock-ов
Где копать?

уреовень транzакции: READ COMMITTED
версия : Server 2019 (RTM-CU8)

deadlock xml.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
<deadlock>
	<victim-list>
		<victimProcess id="process1bc050204e8"/>
	</victim-list>
	<process-list>
		<process id="process1bc050204e8" taskpriority="0" logused="0" waitresource="KEY: 6:72057594085441536 (b16fbaab3d61)" waittime="13615" ownerId="17937102984" transactionname="SELECT" lasttranstarted="2022-01-05T11:06:22.717" XDES="0x1cb568b3be8" lockMode="S" schedulerid="1" kpid="6716" status="suspended" spid="130" sbid="0" ecid="0" priority="0" trancount="0" lastbatchstarted="2022-01-05T11:06:22.717" lastbatchcompleted="2022-01-05T11:06:22.713" lastattention="1900-01-01T00:00:00.713" clientapp="ApplicationNAme" hostname="60cc24f99c51" hostpid="0" loginname="LoginName" isolationlevel="read committed (2)" xactid="17937102984" currentdb="6" currentdbname="SNCF_PROD_E2M" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
			<executionStack>
				<frame procname="adhoc" line="1" stmtend="1838" sqlhandle="0x02000000d3360107ecf4d4603459bdeaa213508e01ae7d170000000000000000000000000000000000000000">  unknown    </frame>
				<frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000">  unknown    </frame>
			</executionStack>
			<inputbuf>  select notificati0_.ID as ID1_172_0_, notificati1_.ID as ID1_174_1_, parameters2_.ID as ID1_173_2_, notificati0_.TimestampCreated as Timestam2_172_0_, notificati0_.PeopleID as PeopleID3_172_0_, notificati0_.TimestampAcknowledged as Timestam4_172_0_, notificati0_.UserNotificationTemplateID as UserNoti5_172_0_, notificati1_.HtmlTemplate as HtmlTemp2_174_1_, notificati1_.Name as Name3_174_1_, parameters2_.ParameterCode as Paramete2_173_2_, parameters2_.UserNotificationID as UserNoti4_173_2_, parameters2_.ParameterValue as Paramete3_173_2_, parameters2_.UserNotificationID as UserNoti4_173_0__, parameters2_.ID as ID1_173_0__ from UserNotification notificati0_ inner join UserNotificationTemplate notificati1_ on notificati0_.UserNotificationTemplateID=notificati1_.ID inner join UserNotificationParameter parameters2_ on notificati0_.ID=parameters2_.UserNotificationID where notificati0_.TimestampAcknowledged is null   </inputbuf>
		</process>
		<process id="process1d12674b468" taskpriority="0" logused="520" waitresource="KEY: 6:72057594085441536 (b16fbaab3d61)" waittime="13025" ownerId="17937103045" transactionname="implicit_transaction" lasttranstarted="2022-01-05T11:06:23.057" XDES="0x1ba9b640428" lockMode="S" schedulerid="16" kpid="4992" status="suspended" spid="150" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2022-01-05T11:06:23.060" lastbatchcompleted="2022-01-05T11:06:23.057" lastattention="1900-01-01T00:00:00.057" clientapp="ApplicationNAme" hostname="60cc24f99c51" hostpid="0" loginname="LoginName" isolationlevel="read committed (2)" xactid="17937103045" currentdb="6" currentdbname="SNCF_PROD_E2M" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128058">
			<executionStack>
				<frame procname="adhoc" line="1" stmtend="1838" sqlhandle="0x02000000d3360107ecf4d4603459bdeaa213508e01ae7d170000000000000000000000000000000000000000">  unknown    </frame>
				<frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000">  unknown    </frame>
			</executionStack>
			<inputbuf>  select notificati0_.ID as ID1_172_0_, notificati1_.ID as ID1_174_1_, parameters2_.ID as ID1_173_2_, notificati0_.TimestampCreated as Timestam2_172_0_, notificati0_.PeopleID as PeopleID3_172_0_, notificati0_.TimestampAcknowledged as Timestam4_172_0_, notificati0_.UserNotificationTemplateID as UserNoti5_172_0_, notificati1_.HtmlTemplate as HtmlTemp2_174_1_, notificati1_.Name as Name3_174_1_, parameters2_.ParameterCode as Paramete2_173_2_, parameters2_.UserNotificationID as UserNoti4_173_2_, parameters2_.ParameterValue as Paramete3_173_2_, parameters2_.UserNotificationID as UserNoti4_173_0__, parameters2_.ID as ID1_173_0__ from UserNotification notificati0_ inner join UserNotificationTemplate notificati1_ on notificati0_.UserNotificationTemplateID=notificati1_.ID inner join UserNotificationParameter parameters2_ on notificati0_.ID=parameters2_.UserNotificationID where notificati0_.TimestampAcknowledged is null   </inputbuf>
		</process>
		<process id="process1b55efc9848" taskpriority="0" logused="520" waitresource="KEY: 6:72057594085441536 (d85d91a1c53b)" waittime="594" ownerId="17937104178" transactionname="implicit_transaction" lasttranstarted="2022-01-05T11:06:24.777" XDES="0x1cb5ff6c428" lockMode="S" schedulerid="9" kpid="4932" status="suspended" spid="287" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2022-01-05T11:06:38.550" lastbatchcompleted="2022-01-05T11:06:38.550" lastattention="1900-01-01T00:00:00.550" clientapp="ApplicationNAme" hostname="60cc24f99c51" hostpid="0" loginname="LoginName" isolationlevel="read committed (2)" xactid="17937104178" currentdb="6" currentdbname="SNCF_PROD_E2M" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128058">
			<executionStack>
				<frame procname="adhoc" line="1" stmtend="1838" sqlhandle="0x02000000d3360107ecf4d4603459bdeaa213508e01ae7d170000000000000000000000000000000000000000">  unknown    </frame>
				<frame procname="unknown" line="1" sqlhandle="0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000">  unknown    </frame>
			</executionStack>
			<inputbuf>  select notificati0_.ID as ID1_172_0_, notificati1_.ID as ID1_174_1_, parameters2_.ID as ID1_173_2_, notificati0_.TimestampCreated as Timestam2_172_0_, notificati0_.PeopleID as PeopleID3_172_0_, notificati0_.TimestampAcknowledged as Timestam4_172_0_, notificati0_.UserNotificationTemplateID as UserNoti5_172_0_, notificati1_.HtmlTemplate as HtmlTemp2_174_1_, notificati1_.Name as Name3_174_1_, parameters2_.ParameterCode as Paramete2_173_2_, parameters2_.UserNotificationID as UserNoti4_173_2_, parameters2_.ParameterValue as Paramete3_173_2_, parameters2_.UserNotificationID as UserNoti4_173_0__, parameters2_.ID as ID1_173_0__ from UserNotification notificati0_ inner join UserNotificationTemplate notificati1_ on notificati0_.UserNotificationTemplateID=notificati1_.ID inner join UserNotificationParameter parameters2_ on notificati0_.ID=parameters2_.UserNotificationID where notificati0_.TimestampAcknowledged is null   </inputbuf>
		</process>
	</process-list>
	<resource-list>
		<keylock hobtid="72057594085441536" dbid="6" objectname="dbo.UserNotification" indexname="IX_UserNotification_TimestampAcknowledged_andIncludedCols" id="lock1ce4cb29880" mode="X" associatedObjectId="72057594085441536">
			<owner-list>
				<owner id="process1b55efc9848" mode="X"/>
			</owner-list>
			<waiter-list>
				<waiter id="process1bc050204e8" mode="S" requestType="wait"/>
			</waiter-list>
		</keylock>
		<keylock hobtid="72057594085441536" dbid="6" objectname="dbo.UserNotification" indexname="IX_UserNotification_TimestampAcknowledged_andIncludedCols" id="lock1ce4cb29880" mode="X" associatedObjectId="72057594085441536">
			<owner-list>
				<owner id="process1bc050204e8" mode="S" requestType="wait"/>
			</owner-list>
			<waiter-list>
				<waiter id="process1d12674b468" mode="S" requestType="wait"/>
			</waiter-list>
		</keylock>
		<keylock hobtid="72057594085441536" dbid="6" objectname="dbo.UserNotification" indexname="IX_UserNotification_TimestampAcknowledged_andIncludedCols" id="lock1ce3eeee400" mode="X" associatedObjectId="72057594085441536">
			<owner-list>
				<owner id="process1d12674b468" mode="X"/>
			</owner-list>
			<waiter-list>
				<waiter id="process1b55efc9848" mode="S" requestType="wait"/>
			</waiter-list>
		</keylock>
	</resource-list>
</deadlock>




Спасибо
...
Рейтинг: 0 / 0
05.01.2022, 22:18
    #40124887
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock - при обычном SELECT-e
zindur,

У Вас не "просто селект", а открыты две неявные транзакции и один запрос, то есть происходит вставка в двух процессах, скорее всего. Отсюда взаимоблокировка.
...
Рейтинг: 0 / 0
06.01.2022, 12:40
    #40124949
zindur
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock - при обычном SELECT-e
Владислав Колосов,

упс, спасибо, не заметил transactionname="implicit_transaction" слепота я :)
Но для простого селекта вродебы не должно так критично перейти в deadlock - я потестил в транзакции (и SET IMPLICIT_TRANSACTIONS ON и BEGIN TRAN ...) и никаких деадлоков
...
Рейтинг: 0 / 0
06.01.2022, 12:49
    #40124950
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
deadlock - при обычном SELECT-e
zindur
Владислав Колосов,

упс, спасибо, не заметил transactionname="implicit_transaction" слепота я :)
Но для простого селекта вродебы не должно так критично перейти в deadlock - я потестил в транзакции (и SET IMPLICIT_TRANSACTIONS ON и BEGIN TRAN ...) и никаких деадлоков


Если есть "implicit_transaction", да ишо и mode="X" => есть инсерт или апдейт.
ВашЪ КО.

ЗЫ. Суслика не всегда видно. Но он есть.

ЗЗЫ. Хотя... могет вы хинты любите в селекты пихать?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / deadlock - при обычном SELECT-e / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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