Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Key ΠΈ Page WaitResource Π² Π΄Π΅Π΄Π»ΠΎΠΊΠ°Ρ… ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ…

Если Π²Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ΡΡŒ ΠΎΡ‚Ρ‡Ρ‘Ρ‚ΠΎΠΌ ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ… (blocked process report) ΠΈΠ»ΠΈ собираСтС Π³Ρ€Π°Ρ„Ρ‹ Π΄Π΅Π΄Π»ΠΎΠΊΠΎΠ², прСдоставляСмыС SQL Server’ΠΎΠΌ, пСриодичСски, Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Ρ‚ΡŒΡΡ с Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠΌΠΈ ΡˆΡ‚ΡƒΠΊΠ°ΠΌΠΈ:

waitresource=β€œPAGE: 6:3:70133β€œ

waitresource=β€œKEY: 6:72057594041991168 (ce52f92a058c)β€œ

Иногда, Π² Ρ‚ΠΎΠΌ гигантском XML, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ ΠΈΠ·ΡƒΡ‡Π°Π΅Ρ‚Π΅, Π±ΡƒΠ΄Π΅Ρ‚ большС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ (Π³Ρ€Π°Ρ„Ρ‹ Π΄Π΅Π΄Π»ΠΎΠΊΠΎΠ² содСрТат список рСсурсов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ индСкса), Π½ΠΎ Π½Π΅ всСгда.

Π­Ρ‚ΠΎΡ‚ тСкст ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΠΈΡ… Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ.

Вся информация, которая Ρ‚ΡƒΡ‚ Π΅ΡΡ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… мСстах, ΠΎΠ½Π° просто сильно распрСдСлСна! Π― Ρ…ΠΎΡ‡Ρƒ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ всё вмСстС β€” ΠΎΡ‚ DBCC PAGE ΠΊ hobt_id ΠΈ ΠΊ Π½Π΅Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ %%physloc%% ΠΈ %%lockres%% функциям.

Π‘Π½Π°Ρ‡Π°Π»Π° ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ оТидания Π½Π° PAGE-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ…, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ ΠΊ KEY-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌ.

1) waitresource=β€œPAGE: 6:3:70133” =Β Database_Id: FileId: PageNumber

Если ваш запрос ΠΆΠ΄Ρ‘Ρ‚ Π½Π° PAGE-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ΅, SQL Server даст Π²Π°ΠΌ адрСс этой страницы.

Разбивая Β«PAGE: 6:3:70133Β» ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ:

  • database_id = 6
  • data_file_id = 3
  • page_numer = 70133

1.1) Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ database_id

Найдём имя Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запроса:

SELECT 
    name 
FROM sys.databases 
WHERE database_id=6;
GO

Π­Ρ‚ΠΎ общСдоступная Π‘Π” WideWorldImporters Π½Π° ΠΌΠΎΡ‘ΠΌ SQL Server.

1.2) Π˜Ρ‰Π΅ΠΌ имя Ρ„Π°ΠΉΠ»Π° Π΄Π°Π½Π½Ρ‹Ρ… β€” Ссли Π²Π°ΠΌ интСрСсно

ΠœΡ‹ собираСмся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ data_file_id Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ шагС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ имя Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’Ρ‹ просто ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡˆΠ°Π³Ρƒ, Π½ΠΎ Ссли Π²Ρ‹ заинтСрСсованы Π² ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΉΡ‚ΠΈ Π΅Π³ΠΎ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² запрос Π² контСкстС Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ Π‘Π”, подставив data_file_id Π² этот запрос:

USE WideWorldImporters;
GO
SELECT 
    name, 
    physical_name
FROM sys.database_files
WHERE file_id = 3;
GO

Π’ Π‘Π” WideWorldImporters это Ρ„Π°ΠΉΠ», Π½Π°Π·Π²Π°Π½Π½Ρ‹ΠΉ WWI_UserData ΠΈ ΠΎΠ½ восстановлСн Ρƒ мСня Π² C:MSSQLDATAWideWorldImporters_UserData.ndf. (Упс, Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ°Π»ΠΈ мСня Π·Π° Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ я ΠΊΠ»Π°Π΄Ρƒ Ρ„Π°ΠΉΠ»Ρ‹ Π½Π° диск с систСмой! НСт! НСловко Π²Ρ‹ΡˆΠ»ΠΎ).

1.3) ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ· DBCC PAGE

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ страница #70133 Π² Ρ„Π°ΠΉΠ»Π΅ Π΄Π°Π½Π½Ρ‹Ρ… 3 ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ Π‘Π” WorldWideImporters. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° содСрТимоС этой страницы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ DBCC PAGE ΠΈ trace-Ρ„Π»Π°Π³Π° 3604.
ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: я ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ DBCC PAGE Π½Π° восстановлСнной ΠΈΠ· бэкапа ΠΊΠΎΠΏΠΈΠΈ Π³Π΄Π΅-Ρ‚ΠΎ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ сСрвСрС, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это нСдокумСнтированная ΡˆΡ‚ΡƒΠΊΠ°. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ созданию Π΄Π°ΠΌΠΏΠ° (ΠΏΡ€ΠΈΠΌ. ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‡ΠΈΠΊΠ° β€” ссылка, ΠΊ соТалСнию, Π²Π΅Π΄Ρ‘Ρ‚ Π²Π½ΠΈΠΊΡƒΠ΄Π°, Π½ΠΎ судя ΠΏΠΎ url, Ρ€Π΅Ρ‡ΡŒ ΠΎ filtered-индСксах).

/* This trace flag makes DBCC PAGE output go to our Messages tab
instead of the SQL Server Error Log file */
DBCC TRACEON (3604);
GO
/* DBCC PAGE (DatabaseName, FileNumber, PageNumber, DumpStyle)*/
DBCC PAGE ('WideWorldImporters',3,70133,2);
GO

ΠŸΡ€ΠΎΠΌΠΎΡ‚Π°Π² ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ object_id ΠΈ index_id.
Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Key ΠΈ Page WaitResource Π² Π΄Π΅Π΄Π»ΠΎΠΊΠ°Ρ… ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ…
ΠŸΠΎΡ‡Ρ‚ΠΈ Π³ΠΎΡ‚ΠΎΠ²ΠΎ! Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠΌΠ΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ индСкса с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запроса:

USE WideWorldImporters;
GO
SELECT 
    sc.name as schema_name, 
    so.name as object_name, 
    si.name as index_name
FROM sys.objects as so 
JOIN sys.indexes as si on 
    so.object_id=si.object_id
JOIN sys.schemas AS sc on 
    so.schema_id=sc.schema_id
WHERE 
    so.object_id = 94623380
    and si.index_id = 1;
GO

И Π²ΠΎΡ‚ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ΅ Π±Ρ‹Π»ΠΎ Π½Π° индСксС PK_Sales_OrderLines Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Sales.OrderLines.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π² SQL Server 2014 ΠΈ Π²Ρ‹ΡˆΠ΅ имя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ DMO sys.dm_db_database_page_allocations. Но Π²Π°ΠΌ придётся Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ страницу Π² Π‘Π”, Ρ‡Ρ‚ΠΎ выглядит Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ-Ρ‚ΠΎ ΠΊΡ€ΡƒΡ‚ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ…, поэтому я использовала DBCC PAGE.

1.4) А ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° Ρ‚ΠΎΠΉ страницС, которая Π±Ρ‹Π»Π° Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π°?

Нууу, Π΄Π°. Но… Π²Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ это Ρ‚ΠΎΡ‡Π½ΠΎ Π½ΡƒΠΆΠ½ΠΎ?
Π­Ρ‚ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π΄Π°ΠΆΠ΅ Π½Π° ΠΌΠ°Π»Π΅Π½ΡŒΠΊΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…. Но это Π²Ρ€ΠΎΠ΄Π΅ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΊΠΎΠ»ΡŒΠ½ΠΎ, поэтому, Ρ€Π°Π· ΡƒΠΆ Π²Ρ‹ Π΄ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ Π΄ΠΎ этого момСнта… Π΄Π°Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ %%physloc%%!

%%physloc%% β€” это Π½Π΅Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ кусочСк ΠΌΠ°Π³ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ физичСский ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ записи. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ %%physloc%% вмСстС с sys.fn_PhysLocFormatter Π² SQL Server 2008 ΠΈ Π²Ρ‹ΡˆΠ΅.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π½Π°Π»ΠΎΠΆΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π° страницу Π² Sales.OrderLines, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС Π΄Π°Π½Π½Ρ‹Π΅ Π² этой Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранятся Π² Ρ„Π°ΠΉΠ»Π΅ Π΄Π°Π½Π½Ρ‹Ρ… #3 Π½Π° страницС #70133, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΎΠ³ΠΎ запроса:

Use WideWorldImporters;
GO
SELECT 
    sys.fn_PhysLocFormatter (%%physloc%%),
    *
FROM Sales.OrderLines (NOLOCK)
WHERE sys.fn_PhysLocFormatter (%%physloc%%) like '(3:70133%'
GO

Как я ΠΈ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»Π° β€” это ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π΄Π°ΠΆΠ΅ Π½Π° ΠΊΡ€ΠΎΡˆΠ΅Ρ‡Π½Ρ‹Ρ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ…. Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ»Π° ΠΊ запросу NOLOCK ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Ρƒ нас всё Ρ€Π°Π²Π½ΠΎ Π½Π΅Ρ‚ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π³Π»ΡΠ½ΡƒΡ‚ΡŒ, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π΅ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π»Π° ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° β€” Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ спокойно ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ грязныС чтСния.
Но, ΡƒΡ€Π°, запрос Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΌΠ½Π΅ Ρ‚Π΅ самыС 25 строк, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ наш запрос ΠΈ сраТался
Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Key ΠΈ Page WaitResource Π² Π΄Π΅Π΄Π»ΠΎΠΊΠ°Ρ… ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ…
Π₯Π²Π°Ρ‚ΠΈΡ‚ ΠΎ PAGE-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ…. Π§Ρ‚ΠΎ Ссли ΠΌΡ‹ ΠΆΠ΄Ρ‘ΠΌ KEY-Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ?

2) waitresource=β€œKEY: 6:72057594041991168 (ce52f92a058c)” = Database_Id, HOBT_Id (Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹ΠΉ Ρ…ΡΡˆ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ %%lockres%%, Ссли Π²Ρ‹ Ρ‚ΠΎΡ‡Π½ΠΎ этого Ρ…ΠΎΡ‚ΠΈΡ‚Π΅)

Если ваш запрос пытаСтся Π½Π°Π»ΠΎΠΆΠΈΡ‚ΡŒ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΡƒ Π½Π° запись Π² индСксС ΠΈ оказываСтся Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½ сам, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚Π΅ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΈΠ½ΠΎΠΉ Ρ‚ΠΈΠΏ адрСса.
Π Π°Π·Π±ΠΈΠ² β€œ6:72057594041991168 (ce52f92a058c)” Π½Π° части, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ:

  • database_id = 6
  • hobt_id = 72057594041991168
  • Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹ΠΉ Ρ…ΡΡˆ = (ce52f92a058c)

2.1) Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ database_id

Π­Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π²Ρ‹ΡˆΠ΅! Находим имя Π‘Π” с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запроса:

SELECT 
    name 
FROM sys.databases 
WHERE database_id=6;
GO

Π’ ΠΌΠΎΡ‘ΠΌ случаС β€” это всё Ρ‚Π° ΠΆΠ΅ Π‘Π” WideWorldImporters.

2.2) Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ hobt_id

Π’ контСкстС Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ Π‘Π”, Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ запрос ΠΊ sys.partitions с ΠΏΠ°Ρ€ΠΎΠΉ Π΄ΠΆΠΎΠΉΠ½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ индСкса…

USE WideWorldImporters;
GO
SELECT 
    sc.name as schema_name, 
    so.name as object_name, 
    si.name as index_name
FROM sys.partitions AS p
JOIN sys.objects as so on 
    p.object_id=so.object_id
JOIN sys.indexes as si on 
    p.index_id=si.index_id and 
    p.object_id=si.object_id
JOIN sys.schemas AS sc on 
    so.schema_id=sc.schema_id
WHERE hobt_id = 72057594041991168;
GO

Он Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΌΠ½Π΅, Ρ‡Ρ‚ΠΎ запрос ΠΆΠ΄Π°Π» Π½Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ΅ Application.Countries, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ индСкс PK_Application_Countries.

2.3) Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Π³ΠΈΠΈ %%lockres%% β€” Ссли Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, какая запись Π±Ρ‹Π»Π° Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Π°

Если я Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ…ΠΎΡ‡Ρƒ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ строкС Π½ΡƒΠΆΠ½Π° Π±Ρ‹Π»Π° Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°, я ΠΌΠΎΠ³Ρƒ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ это с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ запроса ΠΊ самой Ρ‚Π°Π±Π»ΠΈΡ†Π΅. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ %%lockres%%, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ запись, ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡŽΡ‰ΡƒΡŽ с Π²ΠΎΠ»ΡˆΠ΅Π±Π½Ρ‹ΠΌ Ρ…ΡΡˆΠ΅ΠΌ.
Π£Ρ‡Ρ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ этот запрос Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всю Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΠΈ Π½Π° Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ совсСм Π½Π΅ вСсСло:

SELECT
    *
FROM Application.Countries (NOLOCK)
WHERE %%lockres%% = '(ce52f92a058c)';
GO

Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ»Π° NOLOCK (ΠΏΠΎ совСту Klaus Aschenbrenner Π² Ρ‚Π²ΠΈΡ‚Ρ‚Π΅Ρ€Π΅) ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠœΡ‹ ΠΆΠ΅ Ρ…ΠΎΡ‚ΠΈΠΌ просто Π³Π»ΡΠ½ΡƒΡ‚ΡŒ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ сСйчас, Π° Π½Π΅ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΌ Π±Ρ‹Π»ΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π°Ρ‡Π°Π»Π°ΡΡŒ транзакция β€” Π½Π΅ Π΄ΡƒΠΌΠ°ΡŽ, Ρ‡Ρ‚ΠΎ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… Π½Π°ΠΌ Π²Π°ΠΆΠ½Π°.
Вуаля, запись Π·Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ Π±ΠΎΡ€ΠΎΠ»ΠΈΡΡŒ!
Π Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅ΠΌ Key ΠΈ Page WaitResource Π² Π΄Π΅Π΄Π»ΠΎΠΊΠ°Ρ… ΠΈ Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ…

Благодарности ΠΈ дальнСйшСС Ρ‡Ρ‚Π΅Π½ΠΈΠ΅

НС помню ΠΊΡ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ описал ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· этих ΡˆΡ‚ΡƒΠΊ, Π½ΠΎ Π²ΠΎΡ‚ Π΄Π²Π° поста ΠΎ самых Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΡˆΡ‚ΡƒΠΊΠ΅Π½Ρ†ΠΈΡΡ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΡ‚ΡŒΡΡ:

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ