2011-10-19 11 views
12

Sto utilizzando la vista sys.dm_tran_locks per verificare quali aree del mio database hanno blocchi quando si verificano problemi di prestazioni.Come scoprire a quale tabella appartiene un blocco di pagina

Utilizzando questo punto di vista ....

  • Se il resource_type è banca dati posso utilizzare la funzione DB_NAME per scoprire che cosa database ha la serratura.

  • Se è un oggetto , normalmente posso unirmi a sys.tables per verificare quale tabella è.

Tuttavia, se il resource_type è pagina o chiave Esiste un modo per rintracciare questo ritorno alla sua tabella padre in modo da poter avere una buona idea di quali tabelle sono di blocco?

risposta

30

Questo è ciò che la colonna resource_associated_entity_id è per (Example query).

SELECT dm_tran_locks.request_session_id, 
     dm_tran_locks.resource_database_id, 
     DB_NAME(dm_tran_locks.resource_database_id) AS dbname, 
     CASE 
      WHEN resource_type = 'OBJECT' 
       THEN OBJECT_NAME(dm_tran_locks.resource_associated_entity_id) 
      ELSE OBJECT_NAME(partitions.OBJECT_ID) 
     END AS ObjectName, 
     partitions.index_id, 
     indexes.name AS index_name, 
     dm_tran_locks.resource_type, 
     dm_tran_locks.resource_description, 
     dm_tran_locks.resource_associated_entity_id, 
     dm_tran_locks.request_mode, 
     dm_tran_locks.request_status 
FROM sys.dm_tran_locks 
LEFT JOIN sys.partitions ON partitions.hobt_id = dm_tran_locks.resource_associated_entity_id 
LEFT JOIN sys.indexes ON indexes.OBJECT_ID = partitions.OBJECT_ID AND indexes.index_id = partitions.index_id 
WHERE resource_associated_entity_id > 0 
    AND resource_database_id = DB_ID() 
ORDER BY request_session_id, resource_associated_entity_id 
1

Devi trovare l'oggetto id associato a tale risorsa e potrebbe comportare l'adesione a un'altra tabella. Ad esempio,

SELECT *, OBJECT_NAME(p.object_id) 
FROM sys.dm_tran_locks l  
JOIN sys.partitions p 
ON l.resource_associated_entity_id = p.hobt_id 
WHERE resource_type = 'KEY' 

Guardi su sys.dm_tran_locks nella documentazione in linea di capire che cosa le tabelle di unione dovrebbe essere per ogni risorsa.

Problemi correlati