Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Page lock и deadlock - как решить проблему

$
0
0
коллеги, подскажите пожалуйста.

Есть таблица:
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).

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

Viewing all articles
Browse latest Browse all 7251