ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ΡΡ ΠΎΡΡΡΡΠΎΠΌ ΠΎ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°Ρ (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
ΠΡΠΎ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½Π°Ρ
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 Π½Π° Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ ΠΈΠ· Π±ΡΠΊΠ°ΠΏΠ° ΠΊΠΎΠΏΠΈΠΈ Π³Π΄Π΅-ΡΠΎ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΡΡΠΎ Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΡΠΊΠ°. Π Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΡΠ»ΡΡΠ°ΡΡ
, ΠΎΠ½Π°
/* 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.
ΠΠΎΡΡΠΈ Π³ΠΎΡΠΎΠ²ΠΎ! Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ ΠΈΠΌΠ΅Π½Π° ΡΠ°Π±Π»ΠΈΡΡ ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°:
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%% β ΡΡΠΎ Π½Π΅Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΡΡΠΎΡΠ΅ΠΊ ΠΌΠ°Π³ΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
Π’Π΅ΠΏΠ΅ΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π½Π°Π»ΠΎΠΆΠΈΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Π² 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 ΡΡΡΠΎΠΊ, Π·Π° ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°Ρ Π·Π°ΠΏΡΠΎΡ ΠΈ ΡΡΠ°ΠΆΠ°Π»ΡΡ
Π₯Π²Π°ΡΠΈΡ ΠΎ 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
Π ΠΌΠΎΡΠΌ ΡΠ»ΡΡΠ°Π΅ β ΡΡΠΎ Π²ΡΡ ΡΠ° ΠΆΠ΅
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 (
ΠΡΠ°Π»Ρ, Π·Π°ΠΏΠΈΡΡ Π·Π° ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ Π±ΠΎΡΠΎΠ»ΠΈΡΡ!
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠ½ΠΎΡΡΠΈ ΠΈ Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ΅ ΠΏΠΎΠΌΠ½Ρ ΠΊΡΠΎ ΠΏΠ΅ΡΠ²ΡΠΌ ΠΎΠΏΠΈΡΠ°Π» ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΡΡΠΈΡ ΡΡΡΠΊ, Π½ΠΎ Π²ΠΎΡ Π΄Π²Π° ΠΏΠΎΡΡΠ° ΠΎ ΡΠ°ΠΌΡΡ Π½Π°ΠΈΠΌΠ΅Π½Π΅Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΡΡΠΊΠ΅Π½ΡΠΈΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΡΡΡΡ:
- ΠΠΎΡΡ Paul Randal ΠΎ
%%physloc%% ΠΈ sys.fn_PhysLocFormatter (ΠΊΠ°ΠΊ ΠΌΡ Π½Π°ΡΠΈΠΎΠΈ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅) - ΠΠΎΠΏΡΠΎΡ Π½Π° StackOverflow ΠΎΠ±
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ %%lockres%% (ΠΊΠ°ΠΊ ΠΌΡ Π½Π°ΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅). ΠΠ΄ΠΈΠ½ ΠΈΠ· ΠΎΡΠ²Π΅ΡΠΎΠ² Π²Π΅Π΄ΡΡ Π½Π° ΠΏΠΎΡΡGrant Fritchey ΠΎ %%lockres%%, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π΅ΡΡ Π² 2010 .
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com