我正在使用 Microsoft SQL Server 2017,最近我们遇到了一种情况,我们看到等待类型 IO_COMPLETION 贡献了 60%。执行更新统计后,这个问题就消失了。有一个使用表变量的过程,我们正在观察单个查询级别的 IO_COMPLETION 等待类型。对数据库执行更新统计是否会解决该特定过程中发生的 IO_COMPLETION 问题?
我正在使用 Microsoft SQL Server 2017,最近我们遇到了一种情况,我们看到等待类型 IO_COMPLETION 贡献了 60%。执行更新统计后,这个问题就消失了。有一个使用表变量的过程,我们正在观察单个查询级别的 IO_COMPLETION 等待类型。对数据库执行更新统计是否会解决该特定过程中发生的 IO_COMPLETION 问题?
这是可能的。糟糕的统计数据可能导致糟糕的计划,而计划可能糟糕的一种方式是需要缓冲大量行,例如在为 Merge Join 排序之后。缓冲的结果可能溢出到磁盘,导致 IO_COMPLETION 等待。