sql >> Databáze >  >> RDS >> Sqlserver

Odstraňování problémů se zablokováním v SQL Server 2008

SQL Server 2008 má několik způsobů, jak identifikovat procesy a dotazy zapojené do uváznutí.

  1. Pokud jsou uváznutí snadno reprodukovatelná, frekvence je vyšší a můžete profilovat SQL server (pokud je povolen profiler, máte přístup a náklady na výkon na serveru) pomocí SQL Profiler vám poskytne pěkné grafické zobrazení uváznutí. Tato stránka obsahuje všechny informace, které potřeba použít grafy uváznutíhttp://sqlmag.com/ Database-performance-tuning/gathering-deadlock-information-deadlock-graph

  2. Reprodukce zablokování je většinou obtížná nebo k nim dochází v produkčním prostředí, kde k němu nechceme připojit Profiler a ovlivnit výkon.

Tento dotaz bych použil k tomu, aby došlo k uváznutí:

SELECT
  xed.value('@timestamp', 'datetime') as Creation_Date,
  xed.query('.') AS Extend_Event
FROM
(
  SELECT CAST([target_data] AS XML) AS Target_Data
  FROM sys.dm_xe_session_targets AS xt
  INNER JOIN sys.dm_xe_sessions AS xs
  ON xs.address = xt.event_session_address
  WHERE xs.name = N'system_health'
  AND xt.target_name = N'ring_buffer'
) AS XML_Data
CROSS APPLY Target_Data.nodes('RingBufferTarget/event[@name="xml_deadlock_report"]') AS XEventData(xed)
ORDER BY Creation_Date DESC

Nešel bych směrem k použití (NOLOCK) k opravě zablokování. To je kluzký svah a skrývání původního problému.



  1. MySQL - řazení podle count() a GROUP BY

  2. Jak mohu nasadit aplikaci .NET, která používá ODAC, aniž bych uživateli instaloval celou komponentu?

  3. Jak uložit nebo načíst sloupec pole pomocí režimu spánku

  4. mysql pro python 2. 7 říká, že Python v2.7 nebyl nalezen