这些年来,我们的sql服务器数据库积累了很多数据,这导致查询运行缓慢,从而进一步导致应用程序运行速度大大降低。
我们最终决定通过将某些数据存储在其他数据存储中并从SQL Server中删除来归档某些数据。请注意,数据分布在22个表中(元数据)。删除大约40%的数据后,我们发现某些查询的运行速度明显降低。即使有些查询的性能稍有改善,但我们观察到,在运行负载测试时,响应时间和每秒的事务处理量显着下降。
作为数据库方面清理的一部分,我们重新组织并重建了索引。我们确保删除后的碎片数量处于允许的范围内(理想情况下<30%,但远小于此数量)。在此之后,我们使用全面扫描来运行更新统计信息。
我们确定了一个特定的查询,该查询在删除后运行明显慢得多,并且发现与删除前相比,查询计划有所不同(我们创建了一个具有预删除数据集的新数据库来比较差异),即使查询中所有表的表定义(索引,约束等)都是相同的。
在这些步骤之后,我们再次运行了负载测试,但是仍然看到了与以前相同的性能。我不是SQL Server专家,但是与DBA紧密合作,以了解速度下降的根本原因。
DBA建议优化查询,但我不相信这是否真的有帮助,使用更大的数据集查询性能会更好,这意味着删除数据会导致表上的某些更改,从而导致速度变慢。
对于解决此问题的任何指示或指导,我将不胜感激。
谢谢
Karthik