Wydłużony czas trwania zdarzenia Milisekunda czy Mikrosekunda?

15

Na tym forum było pytanie o module_endjednostkę czasu trwania Zdarzenia Rozszerzonego , na które odpowiedziałem. Szczegóły tutaj .

Czy zawsze jest to w mikrosekundach dla wszystkich zdarzeń?

SqlWorldWide
źródło

Odpowiedzi:

31

Jest to połączenie Millisecond, Microsecond, a niektóre są nieznane. Najłatwiejszy sposób na znalezienie tego użyłem poniżej kodu tsql, aby ustalić, co jest czym.

SELECT p.name package_name,
       o.name event_name,
       c.name event_field,
       DurationUnit= CASE
                         WHEN c.description LIKE '%milli%' 
                         THEN SUBSTRING(c.description, CHARINDEX('milli', c.description),12)
                         WHEN c.description LIKE '%micro%' 
                         THEN SUBSTRING(c.description, CHARINDEX('micro', c.description),12)
                         ELSE NULL
                     END,
       c.type_name field_type,
       c.column_type column_type
FROM sys.dm_xe_objects o
JOIN sys.dm_xe_packages p ON o.package_guid = p.guid
JOIN sys.dm_xe_object_columns c ON o.name = c.object_name
WHERE o.object_type = 'event'
AND c.name ='duration'

Oto zestaw wyników z serwera SQL 2016 SP1. Ja tylko zamieszczam jego część. Spójrz na kolumnę DurationUnit, a zobaczysz 3 różne wartości.

wprowadź opis zdjęcia tutaj

W przypadku wartości NULL uważam, że najlepszą opcją jest uruchomienie (jeśli to możliwe z czasem rozpoczęcia i zakończenia) i sprawdzenie, co to jest jednostka.

Uruchomiłem to samo zapytanie przeciwko vnext SQL Server i potwierdziłem, że będziemy wprowadzać to samo zamieszanie w przyszłości.

SqlWorldWide
źródło