如何解决插入数据后 SQL Server 查询性能突然下降
上下文:我们有一个 SQL Server 2019 数据库,其中包含场景建模过程的输出(这也发生在 SQL Server 2017 Express 实现中)。
模型的每个实例在一组标准表中创建一组完整的数据。实例标识符是每个表中的一个关键列。
然后将这些数据转换为星型模式以进行可视化和分析。 连接表以创建星型模式的查询通常会在几十秒内运行,以返回 500,000 - 5,000,000 行以填充星型模式的事实表。
问题:当添加一个新实例时,一个或多个查询通常需要数百倍的时间。在 SSMS 中以交互方式运行时,我看到每分钟返回大约 10,000 行。要达到 100 万,这需要一个多小时,而以前需要 20 秒才能返回 880,000 行。
在 SSMS 中使用 where 子句中包含一个“实例 ID”的简单查询时,或者是否通过运行多个查询以填充事实表的存储过程完成此操作时,都会发生这种情况。
重建索引可以恢复之前的性能。
鉴于随着数据库中的实例越来越多,重建索引的成本越来越高,是否还有其他方法可以解决这种性能下降问题?
解决方法
听起来可能是 tempDB 达到了上限阈值(磁盘空间)。重建索引会清理一些空间,但它可能会再次启动并导致问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。