查找性能瓶颈
1. 打开Profile并创建一个跟踪,选定“Show all events”来改变默认事件。
2. 选择以下事件:
RPC:Starting
SP:Starting
SP:StmtCompleted
SP:StmtStarting
Performance: Showplan XML
3. 运行要测试的程序或存储过程(可以将Tracking结果保存在某个表中以备使用)。
分析解决问题
查看Tracking结果,找出IO比较大的项,如果发生timeout,只需找到有stmtStarting没有stmtCompleting的项即可定位timeout发生的语句,通过执行计划基本可以定位性能瓶颈,通过索引一般可以解决问题(建立索引和调整一下关联条件来应用索引,网上有很多相应内容)。
有些特殊情况,比如有些表不适合建立索引(插入删除操作比较频繁等),或者出于避免大表关联的考虑,我们可以采用空间换时间的方法,把一个大的SQL进行拆分成几个小的sql,临时执行的结果放到表变量或临时表中。这种方法要注意的是尽量把过滤条件提前,减少内存占有量。