一 背景

     客户数据库经常出现死锁、超时、查询慢等问题,数据库mssql,数据量主要表大概上千W。

二 收集信息
     首先是要找出IO大、查询慢、使用频率高的脚本。直接用Profiler加上限制条件在生产环境收集了。
三 辅助脚本
      DMV动态管理视图是必不可少的。还有其他一些命令用来如
      1 set statistics io on 查看IO
      2 set statistics time on 查看时间
     3 dbcc freeproccache 删除计划缓存(正式环境慎用)
     4 dbcc dropcleanbuffers 清除缓冲区(正式环境慎用)
     5 set statistics profile on查看执行计划,当然也可以用图形的
     6 select identity(bigint, 1, 1) AS RowNumber,* into my_trace from fn_trace_gettable('C:\20141031.trc', default) 把跟踪信息导入表中,方便统计查看
四 优化方式
     首先一般语句是先看执行计划,大的存储过程就在代码断前后插入时间如 print convert(varchar(30),getdate(),121),优化大体从技术和业务两方面入手(不考虑换硬件)。在不同数据量环境下,执行计划的表现是不同的,所以要具体问题具体分析,没有绝对最优。
     1 参数嗅探问题
     2 避免adhoc(即席查询)
     3 是否缺少必要的索引,有索引但没走索引,尽量把scan优化成seek
     4 语句写法是否合理,尽量只查询想要的
     5 临时表和表变量合理使用
     6 触发器尽量少用
     7 业务是否可以优化
     8 查询条件,尽量别在查询条件里用自定义函数,查询条件左边不要做计算
五 总结
     经过这次优化,对DMV,执行计划等有了初步了解,其中看MSDN、SQL大牛博客对自己进步很有帮助,理论结合实际这样印象会比较深刻。

最新文章

  1. EF Code First Migrations数据库迁移
  2. JavaScript对象的理解 及 字面量对象与数组的关系
  3. 解决从jenkins打开robot framework报告会提示‘Opening Robot Framework log failed ’的问题
  4. 利用dmidecode 查看服务器的信息技巧
  5. eclipse导入cordova创建的项目
  6. [其他] 蒙特卡洛(Monte Carlo)模拟手把手教基于EXCEL与Crystal Ball的蒙特卡洛成本模拟过程实例:
  7. img标签使用默认图片的一种方式
  8. c# 如何使用wlanapi连接电脑到wifi
  9. tbr tbn tbc
  10. 重新看php数组
  11. MFC重绘函数:InvalidateRect(), Invalidate()和UpdateWindow()
  12. stackoverflow,stackexchange,zhihu,ilewen,segmentfault,answerhub,question2answer,,
  13. js闭包绑定元素
  14. yaf学习之——yaf安装
  15. 熟悉的“if __name__ == '__main__':”究竟是啥?
  16. Confluence 6 升级自定义的站点和空间布局
  17. python第七十七天---HTML
  18. svn的常用命令
  19. maven 详解二
  20. !DOCTYPE 声明

热门文章

  1. 网络编程readn、writen和readline函数的编写
  2. Linux 各个子系统以及监控、测试、优化这些子系统所用到的工具
  3. swift 可变參数
  4. 网络配置ipconfig /release、ipconfig /renew
  5. Burp Suite Intruder的4种攻击类型
  6. Guice 学习(七)常量和属性的注入( Constant and Property Inject)
  7. 【leetcode】118. Pascal's Triangle
  8. Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观
  9. killall 命令
  10. hadoop System times on machines may be out of sync. Check system time and time zones.