在调整 SQL Server 时,在尝试决定首先调整什么时通常使用什么啄食顺序?我问的是现有的数据库,我几乎没有能力重新设计。
例如,我的第一个想法是先调整聚簇索引,然后是非聚簇索引,也许还要检查约束。表和索引的分区将在某处进行。我希望我遗漏了很多可以列在这份清单上的项目。
在调整 SQL Server 时,在尝试决定首先调整什么时通常使用什么啄食顺序?我问的是现有的数据库,我几乎没有能力重新设计。
例如,我的第一个想法是先调整聚簇索引,然后是非聚簇索引,也许还要检查约束。表和索引的分区将在某处进行。我希望我遗漏了很多可以列在这份清单上的项目。
我喜欢遵循SQLCAT 团队成员 Tom Davidson 介绍的通过等待和队列进行性能调优的方法。
您可以从这里下载并阅读他开创性的白皮书。
SQLCAT 是 Microsoft 的 SQL 客户咨询团队 - 他们与要求最苛刻、最大的 SQL Server 客户打交道,因此对一些最大的安装以及如何使它们运行具有独特的见解。
基本上,SQL Server 会收集大量有关它等待的原因和等待内容的统计数据。收集和解释这些信息可以引导您在正确的位置进行调整并解决正确的问题,而不是四处摸索,不知道从哪里开始和做什么。
阅读该白皮书!这真的很有启发性!
当然 - 你需要先建立一个基线(例如有一组查询 - 如果可能的话,你的系统在生产中的合理和现实的“工作量” - 并衡量它们的表现)然后你需要调整一些东西(基于收集和解释等待统计数据的见解)然后您需要再次测量以查看该调整是否有任何帮助 - 或者没有。
SQL Server 性能调整的操作顺序取决于许多因素,例如:
最简单的第一件事就是删除未使用的索引——维护它们需要成本,如果它们未被使用,你就是在浪费资源。该信息可通过查看获得
SELECT * FROM sys.dm_db_index_usage_stats
。大多数系统都是从非聚集索引开始的。对聚簇索引进行更改可能会很快变得非常棘手。
除非您有数亿行或更多行,否则不应考虑分区。