Explicare Key ac Page WaitResource in deadlocks et seris

Si processus clausos adhibes famam vel graphs deadlock ab SQL Servo instructos colliges, intervenit, occurres his similia:

waitresource="PAGE: 6:3:70133"

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

Aliquando plus informationes erunt in illo gigante XML quod discitis (graphae deadlock insunt indicem facultatum quae te adiuvat ut obiectum et nomina indices invenias), sed non semper.

Hic locus te adiuvabit eas interpretari.

Omnia indicia quae passim in Interreti hic sunt, juste admodum distribuuntur! Omnia simul ponere volo - ab DBCC PAGE ad hobt_id et ad undocumentum %% physloc%% et %% lockres %% functiones.

Primum fama de mora in PAGE crines, deinde ad CLAVIS cincinnos movebimus.

1) waitresource="PAGE: 6:3:70133" = Database_Id: FileId: PageNumber

Si quaestio tua in seram PAGE exspectat, SQL Servo tibi illius paginae electronicam dabit.

Rescindentes "PAGE: 6:3:70133" obtinemus:

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

1.1) Minutum database_id

Inveniat nomen database utens interrogationi:

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

Hoc est publicum DB WideWorldImporters meo SQL Servo.

1.2) Vultus nomen tabellae - si interest

Data_file_id adhibemus in proximo gradu ad nomen mensae inveniendum. Praeterire potes simpliciter ad gradum proximum, sed si interest in nomine tabellae, invenire potes currendo quaesitum in contextu database, substituto data_file_id in hac quaestione:

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

In datorum WideWorldImportoribus datorum haec est fasciculus vocatus WWI_UserData et restitutam habeo C:MSSQLDATAWideWorldImporters_UserData.ndf. (Oops, prehendisti me posito lima in orbis ratio! Minime! Inconcinnus erat).

1.3) Get quod nomen ex DBCC PAGE

Nunc scimus paginas #70133 in notitia fasciculi 3 ad datorum WorldWideImporters pertinere. Inspicere possumus contenta huius paginae utens undocumentus DBCC PAGE et vexillum 3604 vestigium.
Nota: malo DBCC PAGE in restituto exemplari ab tergum alicubi ab alio servo uti, quia res undocumentata est. In quibusdam, she inveniatur in TUBER esse creatum (proxime. interpres - nexus, proh dolor, nusquam ducit, sed per URL iudicans, loquimur de indicibus saccatis).

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

Scrolling per proventus, object_id et index_id invenire potes.
Explicare Key ac Page WaitResource in deadlocks et seris
Paene finitur! Nunc invenire mensam et indicem nomina utentes interrogatione:

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

Et nunc videmus quod lock insidiae in PKSales_OrderLines indicem tabularum Sales.OrderLines esse videmus.

Nota: In SQL Servo MMXIV et postea, nomen obiecti etiam inveniri potest utens undocumented DMO sys.dm_db_database_page_allocations. Sed singulas paginas in datorum interrogatione debes, quae frigidissima non magnis databases spectat, sic ego DBCC PAGE.

1.4) Licetne videre notitia in pagina quae impedita est?

Bene, est. Sed... Certus esne hoc vere opus esse?
Etiam in parvis tabulis lentus est. Sed genus frigidum est, ut cum hoc longe legeris... fama %%physloc%%!

%%physloc%% est fragmentum undocumentis magici, quod identificatorium physicum reddit pro quolibet ingressu. vos can utor %%physloc%% una cum sys.fn_PhysLocFormatter in SQL Servo 2008 et altior.

Nunc scimus nos velle paginam in Sales.OrderLines cohibere, omnia notitias in hac tabula inspicere possumus, quae in tabella #3 in pagina #70133 reposita sunt, hac interrogatione utentes:

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

Ut dixi, etiam in parvis tabulis lentum est. Adieci petitioni NOLOCK quia adhuc nullam habemus cautionem, quod notitia quae volumus intueri, prorsus eadem est ac fuit cum seram detectam - sic tuto facere possumus, sordide legit.
Sed, eia, redit mihi quaestio eosdem 25 ordines ad quos nostra quaestio pugnavit
Explicare Key ac Page WaitResource in deadlocks et seris
Jam satis de paoeis comis. Quid si clavem seram exspectamus?

2) waitresource="KEY: 6:72057594041991168 (ce52f92a058c)" = Database_Id, HOBT_Id (mago Nullam quae decrypted uti potest %% lockres%% si vere hoc vis)

Si interrogatione tua in indice testimonium cohibere et se ipsum clausum includere tentat, tandem cum alia omnino ratione inscriptionis electronicae est.
Fractio "6:72057594041991168 (ce52f92a058c)" in partes consequitur:

  • database_id = 6
  • hobt_id = 72057594041991168
  • magicae Nullam = (ce52f92a058c)

2.1) Minutum database_id

Haec prorsus eadem, quam supra exemplum! Reperio nomen database utens interrogationi:

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

Meo casu idem est DB WideWorldImporters.

2.2) Minutum hobt_id

In contextu datorum inventarum, inquisitionem facere debes ad sys.partitiones cum duobus iunctionibus quae nomina tabellae et indicem determinare iuvabit...

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

Hoc mihi narrat petitionem exspectavisse in Application.Countries cohibere utens index PK_Application_Countries.

2.3) Iam parum magicae %% lockres %% - si vis explorare cuius introitus claudebatur

Si scire vere volo utro ordine seria innixa sit, ego ipsam mensam interrogando invenire possum. Unocumented %% lockres%% uti possumus munus invenire ingressum qui Nullam magicae aequat.
Quaeso nota hanc interrogationem totam mensam lustrare, et in magnis tabulis hoc omnino iocum esse non potest;

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

Addidi NOLOCK (de consilio Klaus Aschenbrenner on Twitter) quia impedimenta quaestio fieri potest. Nunc solum spectare volumus, et non quid ibi esset, cum res incepit — data constantia nobis magni momenti esse non puto.
Voila, recordum pugnavimus!
Explicare Key ac Page WaitResource in deadlocks et seris

Agnitiones et ulterior Lectio

Non memini qui multa ex his primus descripseram, sed hic sunt duae tabellae de rebus minimis documentis ut tibi placeas;

Source: www.habr.com

Add a comment