Decipher Eochair agus Leathanach WaitResource i glas agus glas

Má úsáideann tú an tuairisc ar an bpróiseas bactha nó má bhailíonn tú na graif díghlasála a sholáthraíonn SQL Server go tréimhsiúil, tiocfaidh tú ar rudaí mar seo:

waitresource="LEATHANACH: 6:3:70133"

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

Uaireanta beidh níos mó faisnéise ar fáil san fathach XML sin a bhfuil tú ag déanamh staidéir air (tá liosta acmhainní ar ghraif dhíghlasála a chuidíonn leat na hainmneacha oibiachta agus innéacs a fháil amach), ach ní i gcónaí.

Cabhróidh an téacs seo leat iad a aimsiú.

Tá an t-eolas go léir atá anseo ar an Idirlíon in áiteanna éagsúla, níl sé ach an-dáilte! Ba mhaith liom gach rud a chur le chéile - ó LEATHANACH DBCC go hobt_id agus go dtí na feidhmeanna %% physloc% agus %% lockres% gan doiciméadú.

Ar dtús, déanaimis labhairt faoi fheitheamh ar ghlais LEATHANACH, agus ansin bogfaimid ar aghaidh go dtí na glais EOCHAIR.

1) waitresource="LEATHANACH: 6:3:70133" = Bunachar Sonraí_Aitheantas: ComhadId: Uimhir Leathanach

Má tá do cheist ag fanacht ar ghlas LEATHANACH, tabharfaidh Freastalaí SQL seoladh an leathanaigh sin duit.

Ag briseadh síos “LEATHANACH: 6:3:70133” faighimid:

  • database_id = 6
  • data_file_id = 3
  • leathanach_uimhir = 70133

1.1) Díchriptigh database_id

Faighimid ainm an bhunachair shonraí ag baint úsáide as an gceist:

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

Tá sé seo poiblí DB Allmhaireoirí Domhanda ar mo fhreastalaí sql.

1.2) Ag lorg ainm an chomhaid sonraí - má tá suim agat ann

Táimid chun data_file_id a úsáid sa chéad chéim eile chun ainm an tábla a aimsiú. Is féidir leat scipeáil go dtí an chéad chéim eile, ach má tá suim agat in ainm an chomhaid, is féidir leat é a aimsiú trí cheist a rith i gcomhthéacs an bhunachar sonraí aimsithe, ag cur data_file_id ina ionad sa cheist seo:

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

I mbunachar sonraí WideWorldImporters is comhad é seo darb ainm WWI_UserData agus tá sé curtha ar ais agam go C:MSSQLDATAWideWorldImporters_UserData.ndf. (Úps, fuair tú greim orm ag cur comhaid ar diosca an chórais! Ní hea! Bhí sé sin awkward).

1.3) Faigh ainm an réad ó LEATHANACH DBCC

Anois tá a fhios againn go mbaineann leathanach #70133 i gcomhad sonraí 3 le bunachar sonraí WorldWideImporters. Is féidir linn féachaint ar a bhfuil sa leathanach seo trí úsáid a bhaint as LEATHANACH DBCC gan doiciméadú agus bratach 3604 a lorg.
Nóta: Is fearr liom LEATHANACH DBCC a úsáid ar chóip athchóirithe ó chúltaca áit éigin ar fhreastalaí eile, toisc gur rud gan doiciméid é. I gcásanna áirithe, sí d’fhéadfadh dumpáil a bheith mar thoradh air (thart. aistritheoir - níl an nasc, ar an drochuair, i gceannas ar áit ar bith, ach ag breith ar an url, táimid ag caint faoi innéacsanna scagtha).

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

Ag scrollaigh trí na torthaí, is féidir leat object_id agus index_id a aimsiú.
Decipher Eochair agus Leathanach WaitResource i glas agus glas
Beagnach críochnaithe! Anois is féidir leat na hainmneacha táblaí agus innéacs a fháil ag baint úsáide as an gceist:

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 anois feicimid go raibh an fanacht glasála ar an innéacs PK_Sales_OrderLines den tábla Sales.OrderLines.

Nóta: In SQL Server 2014 agus níos déanaí, is féidir an t-ainm oibiachta a fháil freisin ag baint úsáide as an DMO gan cháipéisí sys.dm_db_database_page_allocations. Ach caithfidh tú gach leathanach sa bhunachar sonraí a fhiosrú, rud nach bhfuil cuma an-fhionnuar ar bhunachair shonraí mhóra, mar sin d'úsáid mé LEATHANACH DBCC.

1.4) An féidir na sonraí a fheiceáil ar an leathanach ar cuireadh bac air?

Bhuel, tá. Ach... an bhfuil tú cinnte go bhfuil sé de dhíth ort i ndáiríre?
Tá sé mall fiú ar tháblaí beaga. Ach tá sé cineál fionnuar, mar sin ó tá tú ag léamh go dtí seo ... a ligean ar labhairt faoi %% physloc%%!

Is píosa draíochta gan doiciméid é %%physloc%% a sheolann aitheantóir fisiceach ar ais le haghaidh gach iontráil. is féidir leat úsáid %% physloc%% mar aon le sys.fn_PhysLocFormatter in SQL Server 2008 agus níos airde.

Anois go bhfuil a fhios againn gur theastaigh uainn an leathanach a ghlasáil i Sales.OrderLines, is féidir linn breathnú ar na sonraí go léir sa tábla seo, atá stóráilte i gcomhad sonraí #3 ar leathanach #70133, ag baint úsáide as an gceist seo:

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

Mar a dúirt mé, tá sé mall fiú ar tháblaí beaga. Chuir mé NOLOCK leis an iarratas toisc nach bhfuil aon ráthaíocht againn go fóill go bhfuil na sonraí a dteastaíonn uainn breathnú orthu díreach mar a bhí nuair a aimsíodh an glas - ionas gur féidir linn léamh salach a dhéanamh go sábháilte.
Ach, deifir, cuireann an fiosrúchán ar ais chugam na 25 sraith chéanna ar throid ár bhfiosrúchán ina leith
Decipher Eochair agus Leathanach WaitResource i glas agus glas
Go leor faoi ghlas PAGE. Cad a tharlóidh má táimid ag fanacht le glas EOCHAIR?

2) waitresource=“EOCHAIR: 6:72057594041991168 (ce52f92a058c)” = Database_ID, HOBT_Id (hash draíochta is féidir a dhíchriptiú le %%lockres%% más mian leat é sin i ndáiríre)

Má dhéanann do cheist iarracht taifead a ghlasáil san innéacs agus má dhéantar é a ghlasáil, beidh seoladh iomlán difriúil agat sa deireadh.
Ag briseadh “6: 72057594041991168 (ce52f92a058c)” ina gcodanna, faighimid:

  • database_id = 6
  • hobt_id = 72057594041991168
  • hash draíochta = (ce52f92a058c)

2.1) Díchriptigh database_id

Oibríonn sé seo díreach mar an gcéanna leis an sampla thuas! Faigh ainm an bhunachair shonraí ag baint úsáid as an gceist:

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

I mo chás tá sé fós mar an gcéanna DB Allmhaireoirí Domhanda.

2.2) Díchriptigh hobt_id

I gcomhthéacs an bhunachar sonraí aimsithe, ní mór duit ceist a chur i gcrích ar sys.partitions le péire nascanna a chuideoidh le hainmneacha an tábla agus an t-innéacs a chinneadh...

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

Insíonn sé dom go raibh an t-iarratas ag fanacht ar ghlas Application.Countries ag baint úsáide as an t-innéacs PK_Application_Countries.

2.3) Anois beagán draíochta %%lockres%% - más mian leat a fháil amach cén iontráil a bhí faoi ghlas

Más mian liom a fháil amach cén tsraith a raibh an glas uirthi, is féidir liom a fháil amach ach an tábla féin a cheistiú. Is féidir linn an fheidhm %% lockres%% gan doiciméad a úsáid chun iontráil a aimsiú a mheaitseálann an hash draíochta.
Tabhair faoi deara le do thoil go ndéanfaidh an cheist seo an tábla ar fad a scanadh, agus ar tháblaí móra b'fhéidir nach mbeidh sé seo taitneamhach ar chor ar bith:

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

chuir mé NOLOCK leis (ar chomhairle Klaus Aschenbrenner ar Twitter) mar is féidir bacainní a bheith ina fhadhb. Níl uainn ach breathnú ar a bhfuil ann anois, agus ní ar a raibh ann nuair a thosaigh an t-idirbheart - ní dóigh liom go bhfuil comhsheasmhacht sonraí tábhachtach dúinn.
Voila, an taifead a throid muid ar a son!
Decipher Eochair agus Leathanach WaitResource i glas agus glas

Buíochas agus tuilleadh léitheoireachta

Ní cuimhin liom cé a rinne cur síos ar go leor de na rudaí seo ar dtús, ach seo dhá phostáil faoi na rudaí is lú doiciméadaithe a d’fhéadfadh a bheith uait:

Foinse: will.com

Add a comment