我正在调查虚拟化 (VMWare 6.5) 环境中的慢速 SQL Server 2012 服务器,并且在服务器上遇到了三种不同的等待......令人困惑。这些是HADR_FILESTREAM_IOMGR_IOCOMPLETION
、DIRTY_PAGE_POLL
和SQLTRACE_INCREMENTAL_FLUSH_SLEEP
等待。
所有这三个都有基本相同的等待时间(大约 1000 毫秒/秒)。从研究中,我发现DIRTY_PAGE_POLL
和SQLTRACE_INCREMENTAL_FLUSH_SLEEP
等待(通常)没有什么可担心的。但是,HADR_FILESTREAM_IOMGR_IOCOMPLETION
等待的文档指出它是系统在等待 HA 复制完成时生成的等待。
这个特定的开发服务器从未在服务器上配置 HA 复制(AFAIK / AFAICT),现在也没有配置任何类型的复制或 Always On 高可用性。
在这种情况下 -
- 为什么会
HADR_FILESTREAM_IOMGR_IOCOMPLETION
发生等待呢? - 这种等待是否可能导致或指示数据加载情况放缓的原因(数据加载时间比预期长 5 到 10 倍)
- 由于所有三个等待的持续时间都相同,在这种特定情况下,其他两个等待是否有任何意义,它们是否表明服务器出现减速情况?
该服务器的配置似乎与我们试图复制的实时服务器(也是虚拟化的)相同,但操作系统版本除外(实时为 Nt6.3 Build 9600,Dev 为 NT6.1 SP1 Build 7601)。这三个等待都没有在实时服务器上显着显示。
有任何想法吗?
根据 Paul Randal 的wait stats library entry for this,无论是否配置 AG,等待都是预期的:
但是请注意,此等待类型是在 SQL Server 2012 中引入的,因此如果您的“实时服务器”是旧版本,您将看不到此等待类型。
这三个等待的等待时间相似也就不足为奇了,因为它们都是按例行时间表进行的。
不幸的是,这三个特定的等待不太可能是数据加载速度低于预期的罪魁祸首。我会过滤掉它们,然后再次检查等待统计数据。考虑过滤掉所有“良性”等待统计数据(这里的示例:等待统计数据,或者请告诉我它在哪里受到伤害)并审查什么是高的。