延长事件持续时间是毫秒还是微秒?

Sql*_*ide 17 sql-server extended-events

在这个论坛上有一个关于扩展事件module_end持续时间单位的问题,我回答了这个问题。详情请看这里

对于所有事件,它总是以微秒为单位吗?

Sql*_*ide 35

它是毫秒、微秒和一些未知的混合。最简单的查找方法我使用下面的 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'
Run Code Online (Sandbox Code Playgroud)

这是来自 SQL 2016 SP1 服务器的结果集。我只贴一部分。查看 DurationUnit 列,您可以看到 3 个不同的值。

在此处输入图片说明

对于 NULL 的,我发现最好的选择是运行(如果可能的话,开始和结束时间)并找到单位是什么。

我对 vnext SQL Server 运行了相同的查询,并确认我们将来会遇到同样的困惑。