最近,我们对一些SQL Server视图进行了一些更改,这些更改可能会对性能产生负面影响。我们决定对这些视图运行一些性能测试,以查看我们对它们产生的影响。结果令人惊讶。
下面的图表显示了我们运行的性能测试结果。以下是图表的含义:
- 蓝线表示在进行任何更改之前的视图。 - 红线表示更改后的视图。 - x轴表示循环中的迭代次数。
- 每次迭代,会插入一千条新记录(视图将返回这些记录)。 - 每次迭代,我们从正在测试的视图中选择几个并平均结果。
- y轴表示视图返回结果所需的时间。 - 进行性能测试的select语句带有where子句,每次只返回100条记录(测试期间每个名称都插入了100条记录)。
结果表明,我们确实会遇到性能问题,但让我们困惑的是,一旦数据库中的记录达到约40,000条,性能就会大幅提高。我们在多台不同的服务器上运行了这个测试,并且每次得到类似的结果。
我想知道是否有人可以解释为什么会发生这种情况。为什么我们突破了40,000条记录水平后会获得巨大的性能提升?有人见过类似的情况吗?我尝试搜索一些原因,但没有找到什么有用的信息。
我们尝试调整视图、调整索引、重建和重新组织索引、分析执行计划以及其他各种方法,但到目前为止,我们还没有找到任何可能导致这种情况的原因。
如下是图表:
任何帮助或见解都将不胜感激。谢谢。
下面的图表显示了我们运行的性能测试结果。以下是图表的含义:
- 蓝线表示在进行任何更改之前的视图。 - 红线表示更改后的视图。 - x轴表示循环中的迭代次数。
- 每次迭代,会插入一千条新记录(视图将返回这些记录)。 - 每次迭代,我们从正在测试的视图中选择几个并平均结果。
- y轴表示视图返回结果所需的时间。 - 进行性能测试的select语句带有where子句,每次只返回100条记录(测试期间每个名称都插入了100条记录)。
结果表明,我们确实会遇到性能问题,但让我们困惑的是,一旦数据库中的记录达到约40,000条,性能就会大幅提高。我们在多台不同的服务器上运行了这个测试,并且每次得到类似的结果。
我想知道是否有人可以解释为什么会发生这种情况。为什么我们突破了40,000条记录水平后会获得巨大的性能提升?有人见过类似的情况吗?我尝试搜索一些原因,但没有找到什么有用的信息。
我们尝试调整视图、调整索引、重建和重新组织索引、分析执行计划以及其他各种方法,但到目前为止,我们还没有找到任何可能导致这种情况的原因。
如下是图表:
任何帮助或见解都将不胜感激。谢谢。