ืืืื ืืืจ ื ืืฆื ืื ืืคืืขืฉืืขืื ืคึผืจืึธืฆืขืก ืืึทืจืืื ืึธืืขืจ ืงืืืึทืื ืื ืืขืืืึทืง ืืจืึทืคืก ืฆืืืขืฉืืขืื ืืืจื SQL Server ืคึผืืจืืึทืืืงืื, ืืืจ ืืืขื ืืจืขืคื ืืืื ืืื ืืึธืก:
waitresource = "PAGE: 6:3:70133"
waitresource=โKEY: 6:72057594041991168 (ce52f92a058c)โ
ืืื ืขืก ืืืขื ืืืื ืืขืจ ืืื ืคึฟืึธืจืืึทืฆืืข ืืื ืืขื ืจืื ืงืกืื ืืืจ ืืขืจื ืขื (ืืึทืืืึทืง ืืจืึทืคืก ืึทื ืืืึทืืื ืึท ืจืฉืืื ืคืื ืจืขืกืืจืกื ืืืึธืก ืืขืืคึผืก ืืืจ ืืขืคึฟืื ืขื ืื ื ืึธืืขื ืคืื ืื ืืืืคืขืฅ ืืื ืืื ืืขืงืก), ืึธืืขืจ ื ืื ืฉืืขื ืืืง.
ืืขืจ ืืขืงืกื ืืืขื ืืขืืคื ืืืจ ืืืกืืืคืขืจ ืืื.
ืึทืืข ืืื ืคึฟืึธืจืืึทืฆืืข ืืืึธืก ืืื ืืึธ ืืื ืืืืฃ ืื ืืื ืืขืจื ืขื ืืื ืคืึทืจืฉืืื ืขืจืืขืจ, ืขืก ืืื ื ืึธืจ ืืืืขืจ ืคืื ืื ืืขืจืืขืืืืื! ืืื ืืืืื ืฆื ืฉืืขืื ืึทืืฅ ืฆืืืึทืืขื - ืคึฟืื DBCC PAGE ืฆื hobt_id ืืื ืฆื ืื ืึทื ืืึทืงืืึทืืขื ืื %% physloc%% ืืื %% lockres%% ืคืึทื ืืงืฉืึทื ื.
ืขืจืฉืืขืจ, ืืึธืืืจ ืจืขืื ืืืขืื ืืืืืฅ ืืืืฃ PAGE ืืึทืงืก, ืืื ืืขืจื ืึธื ืืืจ ืืืื ืฆื KEY ืืึทืงืก.
1) waitresource = "PAGE: 6:3:70133" = Database_Id: FileId: PageNumber
ืืืื ืืืื ืึธื ืคึฟืจืขื ืืื ืืืืจืื ืืืืฃ ืึท ืืืึทื ืฉืืึธืก, SQL Server ืืืขื ืืขืื ืืืจ ืื ืึทืืจืขืก ืคืื ืืขื ืืืึทื.
ืืจืืืงืื ื ืึทืจืึธืคึผ "PAGE: 6:3:70133" ืืืจ ืืึทืงืืืขื:
- ืืึทืืึทืืึทืกืข_ืื = 6
- data_file_id = 3
- ืืืึทื_ื ืืืขืจ = 70133
1.1) ืืขืงืจืืคึผื ืืึทืืึทืืืืก_ืื
ืืึธืืืจ ืืขืคึฟืื ืขื ืื ืืึทืืึทืืืืก ื ืึธืืขื ื ืืฆื ืื ืึธื ืคึฟืจืขื:
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 ืืืึทื ืืื ืฉืคึผืืจ ืคืึธื 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 ืืื ืฉืคึผืขืืขืจ, ืื ืืืืคืขืฅ ื ืึธืืขื ืงืขื ืขื ืืืื ืืืื ืืขืคึฟืื ืขื ืืื ืื ืึทื ืืึทืงืืึทืืขื ืื ืืืึธ 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 ืืึทืงืก. ืืืึธืก ืืืื ืืืจ ืืืืจืื ืคึฟืึทืจ ืึท ืฉืืืกื ืฉืืึธืก?
2) waitresource = "KEY: 6:72057594041991168 (ce52f92a058c)" = ืืึทืืึทืืึทืกืข_ืื, HOBT_Id (ืืึทืืืฉ ืืึทืฉ ืืืึธืก ืงืขื ืขื ืืืื ืืขืงืจืืคึผืืื ื ืืฆื %%lockres%% ืืืื ืืืจ ืืึทืงืข ืืืืื ืืึธืก)
ืืืื ืืืื ืึธื ืคึฟืจืขื ืคืจืืืื ืฆื ืฉืืึธืก ืึท ืจืขืงืึธืจื ืืื ืื ืืื ืืขืงืก ืืื ืืืขืจื ืคืืจืฉืคืืจื ืืื, ืืืจ ืขื ืืืงื ืืื ืึท ืืึธืจ ืึทื ืืขืจืฉ ืืืคึผ ืคืื ืึทืืจืขืก.
ืืจืืืงืื ื "6: 72057594041991168 (ce52f92a058c)" ืืื ืคึผืึทืจืฅ, ืืืจ ืืึทืงืืืขื:
- ืืึทืืึทืืึทืกืข_ืื = 6
- hobt_id = 72057594041991168
- ืืึทืืืฉ ืืึทืฉ = (ce52f92a058c)
2.1) ืืขืงืจืืคึผื ืืึทืืึทืืืืก_ืื
ืืึธืก ืึทืจืืขื ืคึผืื ืงื ืื ืืขืืืข ืืื ืื ืืืืฉืคึผืื ืืืืื! ืืขืคึฟืื ืขื ืื ืืึทืืึทืืืืก ื ืึธืืขื ื ืืฆื ืื ืึธื ืคึฟืจืขื:
SELECT
name
FROM sys.databases
WHERE database_id=6;
GO
ืืื ืืืื ืคืึทื ืขืก ืืื ื ืึธื ืื ืืขืืืข
2.2) ืืขืงืจืืคึผื ืืึธืื_ืื
ืืื ืืขื ืงืึธื ืืขืงืกื ืคืื ืื ืืขืคึฟืื ืขื ืืึทืืึทืืืืก, ืืืจ ืืึทืจืคึฟื ืฆื ืืืกืคืืจื ืึท ืึธื ืคึฟืจืขื ืฆื 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
ืขืก ืืขืจืฆืืืื ืืืจ ืึทื ืื ืืงืฉื ืืื ืืขืืืขื ืืืืจืื ืืืืฃ ืื ืึทืคึผืคึผืืืงืึทืืืึธื.ืงืึธืื ืืจืืขืก ืฉืืึธืก ื ืืฆื ืื PK_Application_Countries ืืื ืืขืงืก.
2.3) ืืืฆื ืึท ืืืกื ืืึทืืืฉ %%lockres%% - ืืืื ืืืจ ืืืืื ืฆื ืืขืคึฟืื ืขื ืืืืก ืืืึธืก ืคึผืึธืืืฆืืข ืืื ืืขืืืขื ืคืืจืฉืคืืจื
ืืืื ืืื ืืึทืงืข ืืืืื ืฆื ืืืืกื ืืืึธืก ืจืืืขืจื ืื ืฉืืึธืก ืืื ืืขืืืขื ืืืืฃ, ืืื ืงืขื ืขื ืืขืคึฟืื ืขื ืืืืก ืืืจื ืงืืืขืจืื ื ืื ืืืฉ ืืื. ืืืจ ืงืขื ืขื ื ืืฆื ืื ืึทื ืืึทืงืืึทืืขื ืื %%lockres%% ืคึฟืื ืงืฆืืข ืฆื ืืขืคึฟืื ืขื ืึทื ืคึผืึธืืืฆืืข ืืืึธืก ืืืืึทืื ืื ืืึทืืืฉ ืืึทืฉ.
ืืืืข ืืึธื ืึทื ืื ืึธื ืคึฟืจืขื ืืืขื ืืืขืจืงืืงื ืื ืืื ืฆืข ืืืฉ, ืืื ืืืืฃ ืืจืืืก ืืืฉื ืืึธืก ืงืขื ื ืืฉื ืืืื ืฉืคึผืึทืก ืืื ืึทืืข:
SELECT
*
FROM Application.Countries (NOLOCK)
WHERE %%lockres%% = '(ce52f92a058c)';
GO
ืืื ืืื ืฆืืืขืืืืื NOLOCK (
ืืืึธืืืึท, ืื ืจืขืงืึธืจื ืืืจ ืืขืงืขืืคื ืคึฟืึทืจ!
ืืขืจืงืขื ืื ื ืืื ืืืืึทืืขืจ ืืืืขื ืขื
ืืื ืงืขื ื ืืฉื ืืขืืขื ืงืขื ืืืขืจ ืขืจืฉืืขืจ ืืืกืงืจืืืื ืคืืืข ืคืื โโโโืื ืืื ืื, ืึธืืขืจ ืืึธ ืืขื ืขื ืฆืืืื ืึทืจืืืงืืขื ืืืขืื ืื ืงืืขื ืกืืขืจ ืืึทืงืืืืขื ืืึทื ืืื ืื ืืืึธืก ืืืจ ืงืขื ืืื:
- ืคืืืืืก ืจืึทื ืืึทื ืก ืคึผืึธืกืื ืืืขืื
%%physloc%% ืืื sys.fn_PhysLocFormatter (ืืื ืืืจ ืืึธืื ืืื ืืืขืจ ืืึทืื ืืื ืืขืจ ืขืจืฉืืขืจ ืืืึทืฉืคึผืื) - ืคืจืืืข ืืืืฃ StackOverflow ืืืขืื
ื ืืฆื %%lockres%% (ืืื ืืืจ ืืขืคืื ืขื ืื ืืึทืื ืืื ืื ืจืืข ืืืึทืฉืคึผืื). ืืืื ืขืจ ืคืื ืื ืขื ืืคึฟืขืจืก ืคืืจื ืฆื ืึท ืคึผืึธืกืืืืจืึทื ื ืคืจืืืฉืื ืืืขืื %%lockres%%, ืืขืฉืจืืื ืฆืืจืืง ืืื 2010 .
ืืงืืจ: www.habr.com