【发布时间】:2017-05-03 04:22:42
【问题描述】:
我们目前存在性能问题,因为我确信大多数数据驱动系统确实存在同样的问题。
目前,它们基本上分为 2 类,我认为单个解决方案可以解决:
存储过程有时会在系统中以错误的计划自动重新编译,这会导致其运行非常缓慢。这样做的原因是它首先重新编译的参数集不具有代表性/正常/最佳。这会导致存储过程运行得非常缓慢,需要重新编译才能获得更好的计划
由于 SQL Server 工作方式的动态特性,随着表的增长,系统的不同部分可能会以不同的方式查询它——需要更改索引或更改代码以删除次优编码,如 OR,WHERE 条件下的函数等。
是否有跟踪存储过程成本的系统表?
我们需要创建一个脚本,它应该在一周内(7 天)每小时运行一次,并且我们需要拥有/存储存储过程的数据(例如执行时间、存储过程的成本等)。由此,我们可以识别出性能最差且运行时间较长的存储过程列表,并生成存储过程列表。由此,我们可以对这些存储过程进行调优以提高性能。
【问题讨论】:
-
你使用的是哪个版本的sql server?
-
以错误的执行计划重新编译的 sp 示例?
-
如果您的 SP 运行缓慢,请识别带有错误计划的查询,并在其中添加
OPTION (RECOMPILE)。在开发过程中应该预料到这一点-。例如取决于参数,或使用与创建(和编译)SP 时相比会随着时间显着改变其统计数据的表。
标签: sql-server stored-procedures query-performance performance-monitor