这个论坛中有一个关于扩展事件module_end
持续时间单位的问题,我回答了。详细信息在这里。
所有事件是否总是以微秒为单位?
这个论坛中有一个关于扩展事件module_end
持续时间单位的问题,我回答了。详细信息在这里。
所有事件是否总是以微秒为单位?
Answers:
它混合了毫秒,微秒和一些未知数。最简单的查找方法我在tsql代码下面使用以确定哪个是什么。
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'
这是来自SQL 2016 SP1服务器的结果集。我只张贴了一部分。查看DurationUnit列,您可以看到3个不同的值。
对于NULL,我发现最好的选择是运行(如果可能,可以使用开始时间和结束时间)并找到单位。
我对vnext SQL Server进行了相同的查询,并确认我们将在未来带来同样的困惑。