Extended Event duration Millisecond or Microsecond?

July 23, 2017

There was a question in dba.stackexchange.com titled “module_end extended events duration in microseconds?” that I answered and it was Microsecond in that instance.
Later on, I questioned myself if the duration is always in Microseconds for extended events. I found it is a mix of Millisecond, Microsecond and some are unknown meaning famous NULL. I wrote below tsql code to determine which is what.

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'

Below is a snippet of the result set from a SQL 2016 SP1 server. If you look at the DurationUnit column and you can see 3 different values.

XEDurationResult

For NULL ones I find the best option is to run (if possible with start and end time) and find what the unit is.

I ran the same query against vnext (SQL 2017) SQL Server and confirmed we will carry the same confusion to the future.

1 reply on “Extended Event duration Millisecond or Microsecond?”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.