Decipher Key agus Page WaitResource ann an glasan-glasaidh agus glasan

Ma chleachdas tu an aithisg pròiseas dùinte no ma chruinnicheas tu na grafaichean glasaidh a bheir SQL Server seachad bho àm gu àm, thig thu tarsainn air rudan mar seo:

waitresource="Duilleag: 6:3:70133"

waitresource=“KEY: 6:72057594041991168 (ce52f92a058c)“

Aig amannan bidh barrachd fiosrachaidh anns an XML mòr sin a tha thu a’ sgrùdadh (tha liosta de ghoireasan ann an grafaichean glasaidh a chuidicheas tu gus ainmean an nì agus an clàr-amais a lorg), ach chan ann an-còmhnaidh.

Cuidichidh an teacsa seo thu gus an tuigsinn.

Tha a h-uile fiosrachadh a tha an seo air an eadar-lìn ann an diofar àiteachan, tha e dìreach air a chuairteachadh gu mòr! Tha mi airson a h-uile càil a chuir ri chèile - bho DBCC PAGE gu hobt_id agus gu na gnìomhan %% physloc%% agus %%lockres%% gun sgrìobhainn.

An toiseach, bruidhnidh sinn mu dheidhinn feitheamh air glasan DUILLEAG, agus an uairsin gluaisidh sinn air adhart gu prìomh ghlasan.

1) waitresource = “Duilleach: 6: 3: 70133” = Stòr-dàta_Id: FileId: PageNumber

Ma tha do cheist a’ feitheamh air glas DUILLEAG, bheir SQL Server seòladh na duilleige sin dhut.

A 'briseadh sìos "Duilleag: 6: 3: 70133" gheibh sinn:

  • stòr-dàta_id = 6
  • data_file_id = 3
  • duilleag_àireamh = 70133

1.1) dì-chrioptaich database_id

Lorg sinn ainm an stòr-dàta leis a’ cheist:

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

Tha seo poblach Luchd-in-mhalairt DB WideWorld air mo SQL Server.

1.2) A 'coimhead airson ainm an fhaidhle dàta - ma tha ùidh agad

Tha sinn gu bhith a’ cleachdadh data_file_id san ath cheum gus ainm a’ chlàir a lorg. Faodaidh tu dìreach leum chun ath cheum, ach ma tha ùidh agad ann an ainm an fhaidhle, gheibh thu e le bhith a’ ruith ceist ann an co-theacs an stòr-dàta a chaidh a lorg, a’ cur data_file_id an àite a’ cheist seo:

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

Ann an stòr-dàta WideWorldImporters tha seo na fhaidhle air a bheil WWI_UserData agus tha mi air ath-nuadhachadh gu C:MSSQLDATAWideWorldImporters_UserData.ndf. (Och, ghlac thu mi a’ cur fhaidhlichean air diosc an t-siostaim! Chan e! Bha sin neònach).

1.3) Faigh ainm an nì bho DUILLEAG DBCC

A-nis tha fios againn gur ann do stòr-dàta WorldWideImporters a tha duilleag #70133 ann am faidhle dàta 3. Is urrainn dhuinn sùil a thoirt air susbaint na duilleige seo a’ cleachdadh DUILLEAG DBCC gun sgrìobhainn agus lorg bratach 3604.
Nota: Is fheàrr leam DUILLEAG DBCC a chleachdadh air leth-bhreac ath-leasaichte bho chùl-taic an àiteigin air frithealaiche eile, oir is e rud gun sgrìobhainn a th’ ann. Ann an cuid de chùisean, i dh’ fhaodadh gun tèid dump a chruthachadh (mu thuairmeas. eadar-theangair - chan eil an ceangal, gu mì-fhortanach, a’ stiùireadh àite sam bith, ach a’ breithneachadh leis an url, tha sinn a’ bruidhinn air clàran-amais sìoltachaidh).

/* 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

A’ gluasad tro na toraidhean, gheibh thu object_id agus index_id.
Decipher Key agus Page WaitResource ann an glasan-glasaidh agus glasan
Cha mhòr deiseil! A-nis gheibh thu na h-ainmean clàr agus clàr-amais a’ cleachdadh a’ cheist:

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

Agus a-nis chì sinn gu robh am feitheamh glasaidh air clàr-amais PK_Sales_OrderLines den chlàr Sales.OrderLines.

Nota: Ann an SQL Server 2014 agus nas fhaide air adhart, gheibhear ainm an nì cuideachd a’ cleachdadh an DMO sys.dm_db_database_page_allocations gun sgrìobhainn. Ach feumaidh tu a h-uile duilleag san stòr-dàta a cheasnachadh, rud nach eil a’ coimhead gu math fionnar airson stòran-dàta mòra, agus mar sin chleachd mi DUILLEAG DBCC.

1.4) A bheil e comasach an dàta fhaicinn air an duilleag a chaidh a bhacadh?

Uill, tha. Ach... a bheil thu cinnteach gu bheil fìor fheum agad air?
Tha e slaodach eadhon air bùird beaga. Ach tha e car math, mar sin leis gu bheil thu air leughadh cho fada seo... bruidhnidh sinn mu dheidhinn %% physloc%%!

'S e pìos draoidheachd gun sgrìobhainn a th' ann an %%physloc%% a thilleas aithnichear fiosaigeach airson gach inntrig. faodaidh tu a chleachdadh %% physloc%% còmhla ri sys.fn_PhysLocFormatter ann an SQL Server 2008 agus nas àirde.

A-nis gu bheil fios againn gu robh sinn airson an duilleag a ghlasadh ann an Sales.OrderLines, is urrainn dhuinn coimhead air an dàta gu lèir sa chlàr seo, a tha air a stòradh ann am faidhle dàta #3 air duilleag #70133, a’ cleachdadh a’ cheist seo:

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

Mar a thuirt mi, tha e slaodach eadhon air bùird beaga. Chuir mi NOLOCK ris an iarrtas leis nach eil gealltanas sam bith againn fhathast gu bheil an dàta a tha sinn airson coimhead air dìreach mar a bha e nuair a chaidh a’ ghlas a lorg - gus an urrainn dhuinn leughaidhean salach a dhèanamh gu sàbhailte.
Ach, cabhaig, tha a’ cheist a’ tilleadh thugam na h-aon 25 sreathan ris an do shabaid a’ cheist againn
Decipher Key agus Page WaitResource ann an glasan-glasaidh agus glasan
Gu leòr mu ghlasan DUILLEAG. Dè ma tha sinn a’ feitheamh ri PRÌOMH ghlas?

2) waitresource=“PRÌOMH: 6:72057594041991168 (ce52f92a058c)” = Database_Id, HOBT_Id (hash draoidheil a ghabhas a dhì-chrioptachadh le %%lockres%% ma tha thu dha-rìribh ag iarraidh sin)

Ma dh’ fheuchas do cheist ri clàr a ghlasadh sa chlàr-amais agus ma thèid a ghlasadh fhèin, bidh seòladh gu tur eadar-dhealaichte agad.
A’ briseadh “6: 72057594041991168 (ce52f92a058c)” ann am pàirtean, gheibh sinn:

  • stòr-dàta_id = 6
  • hobt_id = 72057594041991168
  • draoidheachd hash = (ce52f92a058c)

2.1) dì-chrioptaich database_id

Bidh seo ag obair dìreach mar an eisimpleir gu h-àrd! Lorg ainm an stòr-dàta a’ cleachdadh a’ cheist:

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

Anns a 'chùis agam tha e fhathast mar an ceudna Luchd-in-mhalairt DB WideWorld.

2.2) Cuir dheth hobt_id

Ann an co-theacs an stòr-dàta a chaidh a lorg, feumaidh tu ceist a chuir gu sys.partitions le paidhir de cheangalaichean a chuidicheas le bhith a’ dearbhadh ainmean a’ bhùird agus a’ chlàr-amais...

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

Tha e ag innse dhomh gun robh an t-iarrtas a’ feitheamh air a’ ghlas Application.Countries a’ cleachdadh clàr-amais PK_Application_Countries.

2.3) A-nis beagan draoidheachd %%lockres%% - ma tha thu airson faighinn a-mach dè an inntrigeadh a chaidh a ghlasadh

Ma tha mi dha-rìribh ag iarraidh faighinn a-mach dè an sreath air an robh a’ ghlas, gheibh mi a-mach le bhith a’ ceasnachadh a’ bhùird fhèin. 'S urrainn dhuinn an gnìomh %%lockres%% gun sgrìobhainn a chleachdadh gus inntrigeadh a lorg a fhreagras ris an hash draoidheil.
Thoir an aire gum bi a’ cheist seo a’ sganadh a’ bhùird gu lèir, agus air bùird mòra is dòcha nach bi seo spòrsail idir:

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

chuir mi NOLOCK ris (air comhairle Klaus Aschenbrenner air Twitter) oir faodaidh bacadh a bhith na dhuilgheadas. Tha sinn dìreach airson coimhead air na tha ann an-dràsta, agus chan e na bha ann nuair a thòisich an gnothach - chan eil mi a’ smaoineachadh gu bheil cunbhalachd dàta cudromach dhuinn.
Voila, an clàr a bha sinn a’ sabaid air a shon!
Decipher Key agus Page WaitResource ann an glasan-glasaidh agus glasan

Buidheachas agus tuilleadh leughaidh

Chan eil cuimhne agam cò thug cunntas air mòran de na rudan sin an toiseach, ach seo dà phost mu na rudan as lugha clàraichte a dh’ fhaodadh tu a bhith ag iarraidh:

Source: www.habr.com

Cuir beachd ann