Na naszym serwerze działa aplikacja konsoli, która generuje raporty zgodnie z harmonogramem.
Często przetwarzanie jest blokowane przez blokadę SQL, która może trwać kilka minut.
Nie mogę ustalić, co powoduje blokowanie, nawet przy użyciu widoków dynamicznego zarządzania.
Na przykład.
SELECT sqltext.TEXT,
req.session_id,
req.status,
req.command,
req.cpu_time,
req.total_elapsed_time
FROM sys.dm_exec_requests req
CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext
daje:
Wiersz 1 to blokowane zapytanie. Wiersz 2 to zapytanie, którego użyłem do wygenerowania wyniku. Wygląda na to, że nie ma żadnych innych aktywnych zapytań, które mogłyby blokować.
Powoduje to poważne problemy w produkcji i nie wiem, jak postępować.
Czy ktoś może zasugerować, jak mogę spróbować dojść do sedna?
Odpowiedzi:
0 dla odpowiedzi № 1Musisz popatrzeć sys.dm_tran_locks
jeśli problem dotyczy blokowania. DMV sys.dm_exec_requests
mówi tylko, które żądania są blokowane i typ ostatniego oczekiwania. Szczegóły są dostępne w innych powiązanych DMV.
Poniżej oficjalny dokument o nazwie „Rozwiązywanie problemów z wydajnością w SQL Server 2008”ma wszystkie kroki rozwiązywania problemów:
https://technet.microsoft.com/en-us/library/dd672789(v=sql.100).aspx