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

Откуда:
Сообщений: 867
Коллеги, помогите справиться с дедлоком!

Имеются 2 таблички:
/****** Object:  Table [dbo].[Journal]    Script Date: 01/30/2013 20:50:30 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Journal](
	[CntJournal] [int] IDENTITY(1,1) NOT NULL,
	[UserID] [nvarchar](255) NOT NULL,
	[ImportDate] [datetime] NOT NULL,
	[LPU_ID] [nvarchar](6) NOT NULL,
	[Invoice_Num] [nvarchar](10) NULL,
	[Invoice_Date] [smalldatetime] NULL,
	[Description] [nvarchar](1024) NULL,
	[IsDefect] [int] NULL,
	[State] [int] NULL,
 CONSTRAINT [PK_Journal] PRIMARY KEY CLUSTERED 
(
	[CntJournal] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = OFF, ALLOW_PAGE_LOCKS  = OFF, FILLFACTOR = 30) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Journal] ADD  CONSTRAINT [DF_Journal_ImportDate]  DEFAULT (getdate()) FOR [ImportDate]

/****** Object:  Table [dbo].[Files]    Script Date: 01/30/2013 20:51:16 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Files](
	[CntFile] [int] IDENTITY(1,1) NOT NULL,
	[CntJournal] [int] NOT NULL,
	[Comment] [nvarchar](254) NULL,
	[FileType] [nvarchar](10) NOT NULL,
	[XmlData] [xml] NOT NULL,
 CONSTRAINT [PK_Packade] PRIMARY KEY CLUSTERED 
(
	[CntFile] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = OFF, ALLOW_PAGE_LOCKS  = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[Files]  WITH NOCHECK ADD  CONSTRAINT [FK_Files_Journal] FOREIGN KEY([CntJournal])
REFERENCES [dbo].[Journal] ([CntJournal])
ON UPDATE CASCADE
ON DELETE CASCADE
GO

ALTER TABLE [dbo].[Files] CHECK CONSTRAINT [FK_Files_Journal]
GO

CREATE NONCLUSTERED INDEX [Force_FileType] ON [dbo].[Files] 
(
	[CntJournal] ASC,
	[FileType] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS  = OFF, ALLOW_PAGE_LOCKS  = OFF) ON [PRIMARY]
GO

CREATE PRIMARY XML INDEX [ix_XMLData] ON [dbo].[Files] 
(
	[XmlData]
)WITH (PAD_INDEX  = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ALLOW_ROW_LOCKS  = OFF, ALLOW_PAGE_LOCKS  = OFF, FILLFACTOR = 30)
GO


Имеется хранимая процедура:
/****** Object:  StoredProcedure [dbo].[ADD_Files2]    Script Date: 01/30/2013 20:52:31 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Добавляет xml файлы в таблицу files
-- =============================================
CREATE PROCEDURE [dbo].[ADD_Files2]
	@XmlDataL xml,					-- Содержимое файлов
	@XmlDataH xml					-- Содержимое файлов
AS
BEGIN
	SET NOCOUNT ON;
	Declare @CntJournal int;
	Declare @H int;
	Declare @L int;

BEGIN TRY
	Begin tran
		Insert into dbo.Journal 
			  (UserID, ImportDate, LPU_ID, Invoice_Num, 
			   Invoice_Date, [Description], IsDefect)
		Values (SYSTEM_USER, GETDATE(), '', Null,
			   Null, Null, Null)
		Set @CntJournal=SCOPE_IDENTITY()
		
		Insert into dbo.Files 
			  (CntJournal, FileType, XmlData)
		values (@CntJournal, 'L', @XmlDataL)
		Set @L=SCOPE_IDENTITY()

		Insert into dbo.Files 
			  (CntJournal, FileType, XmlData)
		Values (@CntJournal, 'H', @XmlDataH)
		Set @H=SCOPE_IDENTITY()
		
		--Exec dbo.ADD_PERS_LIST @L
		--Exec dbo.ADD_ZL_LIST @H
		Commit tran
		Return 0
	END TRY
	BEGIN CATCH
		rollback tran
		Return -1
	END CATCH


Сервер 2008R2. Уровень изоляции - снимок.
При массированном (да каком, нафиг, массированном! 4 потока всего) параллельном вызове хранимки - возникают дедлоки.

Один существенный момент - XML-файлы - большие. Точнее - разные. От 10 кБ до 100 Мб.

Хранимая процедура вызывается из приложения на VB.NET в несколько потоков. Причем для каждого потока создается отдельная SQLConnection.

При этом:
1. Возникают дедлоки
2. Уровень загрузки процессора на сервере всегда одинаков (около 13%) и не зависит от количества потоков.

Я чего то делаю не так. НО НЕ МОГУ ПОНЯТЬ - ЧЕГО!!!

Посоветуйте хоть чего-нибудь, а?
30 янв 13, 21:10    [13853285]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
Crimean
Member

Откуда:
Сообщений: 13148
профайлером граф дедлока снимите и покажите для начала
30 янв 13, 21:29    [13853347]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3274
1. print @@version
2. Граф дэдлока покажете? Иначе разговор довольно беспредметен.

Но навскидку, для начала вам стоит объединить два инсерта в dbo.Files в один.
30 янв 13, 21:31    [13853351]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
Crimean
Member

Откуда:
Сообщений: 13148
Ennor Tiegael,

а сами по себе xml индексы потенциально не дедлочные?
30 янв 13, 21:41    [13853386]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
uaggster
Member

Откуда:
Сообщений: 867
Crimean,
Вот, примерно так?

2013-01-30 21:55:00.48 spid7s Deadlock encountered .... Printing deadlock information
2013-01-30 21:55:00.48 spid7s Wait-for graph
2013-01-30 21:55:00.48 spid7s
2013-01-30 21:55:00.48 spid7s Node:1

2013-01-30 21:55:00.48 spid7s OBJECT: 15:2121058592:0 CleanCnt:4 Mode:IX Flags: 0x1
2013-01-30 21:55:00.48 spid7s Grant List 0:
2013-01-30 21:55:00.48 spid7s Grant List 3:
2013-01-30 21:55:00.48 spid7s Owner:0x00000000802992C0 Mode: IX Flg:0x40 Ref:1 Life:02000000 SPID:53 ECID:0 XactLockInfo: 0x00000000CBCB4EC0
2013-01-30 21:55:00.48 spid7s SPID: 53 ECID: 0 Statement Type: INSERT Line #: 16
2013-01-30 21:55:00.48 spid7s Input Buf: RPC Event: Proc [Database Id = 15 Object Id = 1093578934]
2013-01-30 21:55:00.48 spid7s Requested by:
2013-01-30 21:55:00.48 spid7s ResType:LockOwner Stype:'OR'Xdes:0x000000013CB6EE80 Mode: X SPID:62 BatchID:0 ECID:0 TaskProxy:(0x000000013C452540) Value:0x80297940 Cost:(0/0)
2013-01-30 21:55:00.48 spid7s
2013-01-30 21:55:00.48 spid7s Node:2

2013-01-30 21:55:00.48 spid7s OBJECT: 15:2121058592:0 CleanCnt:4 Mode:IX Flags: 0x1
2013-01-30 21:55:00.48 spid7s Grant List 0:
2013-01-30 21:55:00.48 spid7s Grant List 3:
2013-01-30 21:55:00.48 spid7s Owner:0x000000008029A680 Mode: IX Flg:0x40 Ref:1 Life:02000000 SPID:62 ECID:0 XactLockInfo: 0x000000013CB6EEC0
2013-01-30 21:55:00.48 spid7s SPID: 62 ECID: 0 Statement Type: INSERT Line #: 16
2013-01-30 21:55:00.48 spid7s Input Buf: RPC Event: Proc [Database Id = 15 Object Id = 1093578934]
2013-01-30 21:55:00.48 spid7s Requested by:
2013-01-30 21:55:00.48 spid7s ResType:LockOwner Stype:'OR'Xdes:0x00000000CBCB4E80 Mode: X SPID:53 BatchID:0 ECID:0 TaskProxy:(0x000000008D150540) Value:0x80297540 Cost:(0/0)
2013-01-30 21:55:00.48 spid7s
2013-01-30 21:55:00.48 spid7s Node:3

2013-01-30 21:55:00.48 spid7s OBJECT: 15:2121058592:0 CleanCnt:4 Mode:IX Flags: 0x1
2013-01-30 21:55:00.48 spid7s Grant List 0:
2013-01-30 21:55:00.48 spid7s Grant List 3:
2013-01-30 21:55:00.48 spid7s Owner:0x00000000802992C0 Mode: IX Flg:0x40 Ref:1 Life:02000000 SPID:53 ECID:0 XactLockInfo: 0x00000000CBCB4EC0
2013-01-30 21:55:00.48 spid7s Requested by:
2013-01-30 21:55:00.48 spid7s ResType:LockOwner Stype:'OR'Xdes:0x000000008088C3B0 Mode: X SPID:63 BatchID:0 ECID:0 TaskProxy:(0x000000014355A540) Value:0x801e4fc0 Cost:(0/0)
2013-01-30 21:55:00.49 spid7s
2013-01-30 21:55:00.49 spid7s Victim Resource Owner:
2013-01-30 21:55:00.49 spid7s ResType:LockOwner Stype:'OR'Xdes:0x000000013CB6EE80 Mode: X SPID:62 BatchID:0 ECID:0 TaskProxy:(0x000000013C452540) Value:0x80297940 Cost:(0/0)
2013-01-30 21:55:00.49 spid7s
2013-01-30 21:55:00.49 spid7s Victim Resource Owner:
2013-01-30 21:55:00.49 spid7s ResType:LockOwner Stype:'OR'Xdes:0x00000000CBCB4E80 Mode: X SPID:53 BatchID:0 ECID:0 TaskProxy:(0x000000008D150540) Value:0x80297540 Cost:(0/0)
30 янв 13, 22:05    [13853501]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
uaggster
Member

Откуда:
Сообщений: 867
Ennor Tiegael,

Microsoft SQL Server 2008 R2 (SP1) - 10.50.2550.0 (X64)
Jun 11 2012 16:41:53
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
30 янв 13, 22:07    [13853509]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
Crimean
Member

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

профайлером же. а не с лога. а то тут надо все ресурсы резолвить для начала. да и привычнее уже по графу из профайлера работать
30 янв 13, 22:22    [13853568]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
uaggster
Member

Откуда:
Сообщений: 867
Crimean,
Гм... а его как вставить?

См. приложение?

К сообщению приложен файл. Размер - 109Kb
30 янв 13, 22:41    [13853663]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
uaggster
Member

Откуда:
Сообщений: 867
<deadlock-list>
 <deadlock victim="process51cd048">
  <process-list>
   <process id="process40ad048" taskpriority="0" logused="0" waitresource="OBJECT: 15:2121058592:0 " waittime="1081" ownerId="1452593" transactionname="user_transaction" lasttranstarted="2013-01-30T21:56:54.783" XDES="0xc57c5950" lockMode="X" schedulerid="3" kpid="4448" status="suspended" spid="59" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2013-01-30T21:56:54.783" lastbatchcompleted="2013-01-30T21:56:49.050" clientapp=".Net SqlClient Data Provider" hostname="W01-3000-1001" hostpid="7928" loginname="SOGAZ-MED\Skoblevad" isolationlevel="read committed (2)" xactid="1452593" currentdb="15" lockTimeout="4294967295" clientoption1="673185824" clientoption2="128056">
    <executionStack>
     <frame procname="reestrsx3.dbo.ADD_Files2" line="16" stmtstart="760" stmtend="1144" sqlhandle="0x03000f00b6b02e41d089550156a100000100000000000000">
Insert into dbo.Journal 
			  (UserID, ImportDate, LPU_ID, Invoice_Num, 
			   Invoice_Date, [Description], IsDefect)
		Values (SYSTEM_USER, GETDATE(), &apos;&apos;, Null,
			   Null, Null, Null)     </frame>
    </executionStack>
    <inputbuf>
Proc [Database Id = 15 Object Id = 1093578934]    </inputbuf>
   </process>
   <process id="process51cd048" taskpriority="0" logused="0" waitresource="OBJECT: 15:2121058592:0 " waittime="1081" ownerId="1449909" transactionname="user_transaction" lasttranstarted="2013-01-30T21:56:51.483" XDES="0x13cb6ee80" lockMode="X" schedulerid="8" kpid="4560" status="suspended" spid="62" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2013-01-30T21:56:51.480" lastbatchcompleted="2013-01-30T21:56:47.470" clientapp=".Net SqlClient Data Provider" hostname="W01-3000-1001" hostpid="7928" loginname="SOGAZ-MED\Skoblevad" isolationlevel="read committed (2)" xactid="1449909" currentdb="15" lockTimeout="4294967295" clientoption1="673185824" clientoption2="128056">
    <executionStack>
     <frame procname="reestrsx3.dbo.ADD_Files2" line="16" stmtstart="760" stmtend="1144" sqlhandle="0x03000f00b6b02e41d089550156a100000100000000000000">
Insert into dbo.Journal 
			  (UserID, ImportDate, LPU_ID, Invoice_Num, 
			   Invoice_Date, [Description], IsDefect)
		Values (SYSTEM_USER, GETDATE(), &apos;&apos;, Null,
			   Null, Null, Null)     </frame>
    </executionStack>
    <inputbuf>
Proc [Database Id = 15 Object Id = 1093578934]    </inputbuf>
   </process>
   <process id="process4093288" taskpriority="0" logused="0" waitresource="OBJECT: 15:2121058592:0 " waittime="1081" ownerId="1455045" transactionname="user_transaction" lasttranstarted="2013-01-30T21:56:57.937" XDES="0x15b811950" lockMode="X" schedulerid="2" kpid="6116" status="suspended" spid="63" sbid="0" ecid="0" priority="0" trancount="2" lastbatchstarted="2013-01-30T21:56:57.937" lastbatchcompleted="2013-01-30T21:56:53.473" clientapp=".Net SqlClient Data Provider" hostname="W01-3000-1001" hostpid="7928" loginname="SOGAZ-MED\Skoblevad" isolationlevel="read committed (2)" xactid="1455045" currentdb="15" lockTimeout="4294967295" clientoption1="673185824" clientoption2="128056">
    <executionStack>
     <frame procname="reestrsx3.dbo.ADD_Files2" line="16" stmtstart="760" stmtend="1144" sqlhandle="0x03000f00b6b02e41d089550156a100000100000000000000">
Insert into dbo.Journal 
			  (UserID, ImportDate, LPU_ID, Invoice_Num, 
			   Invoice_Date, [Description], IsDefect)
		Values (SYSTEM_USER, GETDATE(), &apos;&apos;, Null,
			   Null, Null, Null)     </frame>
    </executionStack>
    <inputbuf>
Proc [Database Id = 15 Object Id = 1093578934]    </inputbuf>
   </process>
  </process-list>
  <resource-list>
   <objectlock lockPartition="0" objid="2121058592" subresource="FULL" dbid="15" objectname="reestrsx3.dbo.Journal" id="lock8020cd80" mode="IX" associatedObjectId="2121058592">
    <owner-list>
     <owner id="process51cd048" mode="IX"/>
    </owner-list>
    <waiter-list>
     <waiter id="process40ad048" mode="X" requestType="convert"/>
    </waiter-list>
   </objectlock>
   <objectlock lockPartition="0" objid="2121058592" subresource="FULL" dbid="15" objectname="reestrsx3.dbo.Journal" id="lock8020cd80" mode="IX" associatedObjectId="2121058592">
    <owner-list>
     <owner id="process40ad048" mode="IX"/>
    </owner-list>
    <waiter-list>
     <waiter id="process51cd048" mode="X" requestType="convert"/>
    </waiter-list>
   </objectlock>
   <objectlock lockPartition="0" objid="2121058592" subresource="FULL" dbid="15" objectname="reestrsx3.dbo.Journal" id="lock8020cd80" mode="IX" associatedObjectId="2121058592">
    <owner-list>
     <owner id="process51cd048" mode="IX"/>
    </owner-list>
    <waiter-list>
     <waiter id="process4093288" mode="X" requestType="convert"/>
    </waiter-list>
   </objectlock>
  </resource-list>
 </deadlock>
</deadlock-list>
	
30 янв 13, 22:47    [13853685]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
RESEARCH
Member

Откуда:
Сообщений: 186
не попробовать ли перенести

begin tran перед begin try
30 янв 13, 23:19    [13853795]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
нязнайка
Guest
А что если убрать каскадный ?
ON UPDATE CASCADE

в
ALTER TABLE [dbo].[Files]  WITH NOCHECK ADD  CONSTRAINT [FK_Files_Journal] FOREIGN KEY([CntJournal])
REFERENCES [dbo].[Journal] ([CntJournal])
ON UPDATE CASCADE
ON DELETE CASCADE
30 янв 13, 23:25    [13853815]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
uaggster
Member

Откуда:
Сообщений: 867
RESEARCH,
Гм... С чего бы это? Если в теле транзакции возникает ошибка, я вылетаю в кэтч и откатываю ее. Всё, вроде, правильно :-)

нязнайка,
Попробовал. Каскадный апдейт там вроде бы действительно не нужен. Результат - тот же.
30 янв 13, 23:40    [13853895]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
У вас дедлок на конвертации IX -> X.
Попробуйте
alter table dbo.Journal set lock_escalation = disable;
30 янв 13, 23:54    [13853965]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
нязнайка
Guest
ALLOW_ROW_LOCKS = OFF, ALLOW_PAGE_LOCKS = OFF
30 янв 13, 23:56    [13853970]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
нязнайка
Guest
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = OFF, ALLOW_PAGE_LOCKS  = OFF, FILLFACTOR = 30) ON [PRIMARY]
) ON [PRIMARY]


Блокировки уровня строки и страниц запрещены.
Нужно разрешить.
30 янв 13, 23:58    [13853979]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
uaggster
Member

Откуда:
Сообщений: 867
invm, эскалацию запретил на обеих таблицах
нязнайка, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON.

Результат - тот же. :(
31 янв 13, 00:14    [13854016]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
Crimean
Member

Откуда:
Сообщений: 13148
uaggster
invm, эскалацию запретил на обеих таблицах
нязнайка, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON.

Результат - тот же. :(


неверю! а точнее не могу понять на каком ресурсе драка

2 нязнайка

а точно, а все и проглядели
31 янв 13, 00:35    [13854083]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
aleks2
Guest
1. Малой кровью - Insert into dbo.Journal with(tablock, xlock)
2. Малой кровью - поднять уровень изоляции до SERIALIZABLE.
3. Радикально: sp_getapplock.
4. Еще радикальнее: здесь транзакция нужна как мертвому припарки.

ЗЫ. Ну и нафега ДВА
                           Insert into dbo.Files 
			  (CntJournal, FileType, XmlData)
		values (@CntJournal, 'L', @XmlDataL)
		Set @L=SCOPE_IDENTITY()

		Insert into dbo.Files 
			  (CntJournal, FileType, XmlData)
		Values (@CntJournal, 'H', @XmlDataH)
		Set @H=SCOPE_IDENTITY()

я ваще непонимаю.
31 янв 13, 07:12    [13854361]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
фывафыва
Guest
uaggster,

попробуй теста ради FK вообще прибить. через FK дедлоки вполне реально получать.
и нет ли там кроме fk еще какого-нибудь триггера, например.
31 янв 13, 08:03    [13854395]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
Ennor Tiegael
Member

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

Да, слона-то я и не заметил. Не пользовался ими никогда просто.

Автору - напрямую к делу вряд ли относится, но филфактор 30 на кластерник, да и на XML-индекс тоже - это зачем? Только не говорите, что это дефолт для всей базы

Ну и как советовали уже, ALLOW_ROW_LOCKS = OFF, ALLOW_PAGE_LOCKS = OFF переключить в ON везде, где встречается.
31 янв 13, 08:06    [13854399]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
uaggster
Member

Откуда:
Сообщений: 867
aleks2
1. Малой кровью - Insert into dbo.Journal with(tablock, xlock)
2. Малой кровью - поднять уровень изоляции до SERIALIZABLE.
3. Радикально: sp_getapplock.
4. Еще радикальнее: здесь транзакция нужна как мертвому припарки.

ЗЫ. Ну и нафега ДВА
                           Insert into dbo.Files 
			  (CntJournal, FileType, XmlData)
		values (@CntJournal, 'L', @XmlDataL)
		Set @L=SCOPE_IDENTITY()

		Insert into dbo.Files 
			  (CntJournal, FileType, XmlData)
		Values (@CntJournal, 'H', @XmlDataH)
		Set @H=SCOPE_IDENTITY()

я ваще непонимаю.


По пунктам: :-)
1. Попробую.
2. Пробовал.
3. Покурю :-)))
4. Да нет. Это просто кусок процедуры. Я просто тестовый пример сделал из реальной БД и катаюсь на нем.
Там нужна транзакция по смыслу.

>ЗЫ. Ну и нафега ДВА
Ну потому что их не два. А от двух до N разных типов. Просто они потом, аналогичными SP добавляются.
Короче, отлито из гранита, руками не трогать :-)

нязнайка, специальное спасибо. Когда аккуратно всё расковырял - всё заработало.
Переключил ALLOW_ROW_LOCKS = OFF, ALLOW_PAGE_LOCKS = OFF в ON (буду разбираться откуда взялось и зачем)
Каскадное обновление ключей - тоже убрал (тоже непонятно зачем оно там, если первичные ключи - автоинкремент)
Сделал ALTER TABLE dbo.Journal SET (LOCK_ESCALATION = auto );
ALTER TABLE dbo.Files SET (LOCK_ESCALATION = auto);

И всё заработало. Такое впечатление, что структуру... Гм... специально подкрутили.

Сейчас всё дедлочится в других хранимках, буду ковырять. Начну с пересоздания БД целиком.

... Видимо, еще вернусь :-)

Ennor Tiegael
>но филфактор 30 на кластерник, да и на XML-индекс тоже - это зачем?
Мне, вот, кстати, тоже бы хотелось знать.
31 янв 13, 11:36    [13855532]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
Гость333
Member

Откуда:
Сообщений: 3683
uaggster
Сейчас всё дедлочится в других хранимках, буду ковырять. Начну с пересоздания БД целиком.

**поперхнувшись чаем** Не знал, что с дедлоками борются путём пересоздания базы.
31 янв 13, 11:45    [13855598]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
Crimean
Member

Откуда:
Сообщений: 13148
и филлфакторы в 100 верните
31 янв 13, 12:13    [13855820]     Ответить | Цитировать Сообщить модератору
 Re: Помогите избавиться от deadlock'a  [new]
uaggster
Member

Откуда:
Сообщений: 867
Гость333, Это тестовая база. Частичный скрипт из унаследованной. Исследуется на предмет "почему сервер новый, а тормозит".
В частности, указанные xml-ки почему то вкачиваются только в один поток.

... там еще не всё :(
31 янв 13, 13:37    [13856648]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить