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

Есть таблица:
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE dbo.[limits](
	[id] [bigint] IDENTITY(-9223372036854775808,1) NOT NULL,
	[id1] [uniqueidentifier] NULL,
	[id2] [bigint] NULL,
	[author_id] [uniqueidentifier] NOT NULL,
	[quantity] [int] NOT NULL,
 CONSTRAINT [pk_limits] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO


CREATE UNIQUE NONCLUSTERED INDEX [idx_aggregated_PCValue_limits_author_id_PCValue_id] ON [dbo].[limits]
(
	[author_id] ASC,
	[id2] ASC
)
INCLUDE ( 	[quantity],
	[id1]) 
WHERE ([id2] IS NOT NULL)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO


CREATE UNIQUE NONCLUSTERED INDEX [idx_aggregated_PCValue_limits_author_id_id1] ON [dbo].[limits]
(
	[author_id] ASC,
	[id1] ASC
)
INCLUDE ( 	[quantity],
	[id2]) 
WHERE ([id1] IS NOT NULL)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO


В этой таблице храняться лимиты по событиям. События - это запросы поступающие с web-сервисов. Когда запросов немного, все ок, но когда их очень много, то начинаются deadlock-и, при этом конкуренция за страницы (Page Lock).

Как можно решить данную проблему?
7 окт 16, 12:13    [19754588]     Ответить | Цитировать Сообщить модератору
 Re: Page lock и deadlock - как решить проблему  [new]
aleks2
Guest
pagelock43
Как можно решить данную проблему?

Проблему не видно.

Запрос то хде?

ЗЫ. Вангую... зря вы выбрали id кластерным индексом. Судя по прочим индексам - ищем то по author_id.
7 окт 16, 12:22    [19754641]     Ответить | Цитировать Сообщить модератору
 Re: Page lock и deadlock - как решить проблему  [new]
Yayaadmin
Guest
pagelock43
коллеги, подскажите пожалуйста.

Есть таблица:
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE dbo.[limits](
	[id] [bigint] IDENTITY(-9223372036854775808,1) NOT NULL,
	[id1] [uniqueidentifier] NULL,
	[id2] [bigint] NULL,
	[author_id] [uniqueidentifier] NOT NULL,
	[quantity] [int] NOT NULL,
 CONSTRAINT [pk_limits] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

GO


CREATE UNIQUE NONCLUSTERED INDEX [idx_aggregated_PCValue_limits_author_id_PCValue_id] ON [dbo].[limits]
(
	[author_id] ASC,
	[id2] ASC
)
INCLUDE ( 	[quantity],
	[id1]) 
WHERE ([id2] IS NOT NULL)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO


CREATE UNIQUE NONCLUSTERED INDEX [idx_aggregated_PCValue_limits_author_id_id1] ON [dbo].[limits]
(
	[author_id] ASC,
	[id1] ASC
)
INCLUDE ( 	[quantity],
	[id2]) 
WHERE ([id1] IS NOT NULL)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO


В этой таблице храняться лимиты по событиям. События - это запросы поступающие с web-сервисов. Когда запросов немного, все ок, но когда их очень много, то начинаются deadlock-и, при этом конкуренция за страницы (Page Lock).

Как можно решить данную проблему?


А какие запросы Deadlock та накладывают.
7 окт 16, 12:23    [19754651]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить