您使用什么技巧?你如何找出运行时间最长的工作?有没有办法找出有问题的申请?
答案 0 :(得分:5)
答案 1 :(得分:3)
要识别有问题的查询,请启动Profiler,选择以下事件:
过滤输出,例如
取决于您想要优化的内容。 确保过滤输出足以使数千个数据行滚动窗口,因为这会影响服务器性能!
将输出记录到数据库表以便以后对其进行分析很有帮助。 它还有助于并行运行Windows系统监视器以查看cpu加载,磁盘io和一些sql server性能计数器。配置sysmon以将数据保存到文件中。
您必须在数据库上获取生产典型的查询负载和数据量,才能使用分析器查看有意义的值。
从探查器获取一些输出后,您可以停止分析。
然后将分析表中存储的数据再次加载到分析器中,并使用importmenu从systemmonitor导入输出,分析器将sysmon输出与sql profiler数据相关联。这是一个非常好的功能。
在该视图中,您可以立即识别有关内存,磁盘或CPU系统的bootlenecks。
当您确定了一些想要夸大的查询时,请转到查询分析器并观察执行计划,并尝试优化索引使用和查询设计。
答案 2 :(得分:1)
在使用SQL Server 2000时,我使用SSMS或SQL事件探查器中提供的数据库调整工具取得了很好的成功。
关键是要使用一个好的样本集,跟踪一部分真正的生产工作负载,这样才能获得最佳的整体效果。
答案 3 :(得分:1)
我使用SQL Server附带的SQL Profiler。我发现的大多数性能不佳的查询都没有使用大量的CPU,但却产生了大量的磁盘IO。
我倾向于在磁盘读取上放置过滤器,并查找往往超过20,000次读取的查询。然后我查看这些查询的执行计划,这些查询通常会为您提供优化查询或所涉及表的索引所需的信息。
答案 4 :(得分:0)
我使用了一些不同的技术。
如果您尝试优化特定查询,请使用查询分析器。使用那里的工具,如显示执行计划等。
对于您不确定WHICH查询运行缓慢的情况,您可以使用的最强大的工具之一是SQL事件探查器。
只需选择您要分析的数据库,然后让它自行完成。
您需要让它运行相当长的时间(这会因应用程序的流量而异),然后您可以将结果转储到表中并开始分析它们。
您将要查看具有大量读取的查询,或占用大量CPU时间等。
优化是一种熊,但要坚持下去,最重要的是,不要假设你知道瓶颈在哪里,找到它的位置并进行修复。