一工具概要
? ? 数据库应用系统性能低下, 需要对其进行优化,
? ? 如果不知道问题出在哪里, 可以使用性能检测工具 sql server profiler
? ? 如果知道问题出在哪里, 却不知道如何解决, 可以使用数据库引擎优化顾问 Database Engine Tuning Advisor
二 sql server profiler
功能: 检测到数据库中的所有操作, 把监视的内容记录到数据库或者是文件中
文件 -- 新建跟踪 -- 显示跟踪属性窗口
首先那个 select% 是个筛选监测的 TextData 那个 % 是个通配符, 他的意思就是筛选 select 开口的语句当然这你自己可以随便定义, 如 update%,delete%....
把那个排除不包含值的行也给带上, 然后确定, 运行然后在数据库中运行一句 select 你会发现他检测到啦
每列以此向右, 从 EventClass 开始, 我给你讲讲都是什么
? ? 事件分类, 申请了语句, 应用程序名称, 操作系统用户, 数据库用户, cpu 占用率, 读数据库次数, 写数据库次说, 执行脚本用时, 应用程序进程号, 开始时间, 结束时间等
? ? 事件选择, 你就把鼠标放上去, 他下面有中文的注释自己好好看看, 然后根据你自己的需要把事件勾选上来
? ? ? 然后文件 -->> 另存为, 可以把这些监测到的数据保存为文件, 或数据表
1. 查找持续时间最长的查询
? ? 一般情况下, 最长查询时间的查询语句就是最影响性能的原因存在它不仅占用数据库引擎大量的时间, 还浪费系统资源, 还影响数据库应用系统的交互速度再对数据用应用系统进行优化时, 先找出他, 对其优化, 在创建跟踪时, 勾上 TSQL-SQL:BatchCompleted. 跟 Stored Procedures-RPC:completed 这样就能找出来这个最长时间查询然后对其进行分析优化
select TextData,Duration,CPU from TraceFileDataTable
where EventClass=12 -- 等于 12 表示 BatchCompleted 事件 and CPU<(0.4*Duration) -- 如果 cpu 的占用时间, 小于执行 sql 语句时间的 40%, 说明该语句等待时间过长
2. 最占用系统资源的查询
? ? 就是占用 cpu 时间, 跟读写 IO 的次数建议事件包含 ConnectDisconnectExistingConnectionSQL:BatchCompletedRPC:completed, 列包含 writes,reads,cpu
3. 检测死锁
? ? 在访问量, 并发量都很大的数据库中, 如果设计稍不合理, 就有可能造成死锁, 给系统性能带来影响事件包含: RPC:StartingSQL:BatchStartingLock:DeadLock(死锁事件)Lock:DeadLockChaining(死锁的事件序列)
三数据库引擎优化顾问 Database Engine Tuning Advisor
? ? 数据库引擎优化顾问先是接受 sql server profiler 检测出来的 sql, 视图, 存储过程, 数据结构等等, 然后他再自己分析, 给出更好的索引, 统计, 分区等等建议信息
打开之后, 你在上一个工具中保存的的文件, 你就在这里的工作负荷中选文件, 表就选表, 把要分析的数据库跟数据库的表选上, 也就是下面的用于工作负荷分析的数据库选择, 跟下面的要优化的数据库和表
然后选则你想要的优化选项
根据需要, 选上, 高级选项里面通常可以默认确定
然后点左上角有一个开始分析
分析完成
Sql 性能检测工具: Sql server profiler 和优化工具: Database Engine Tuning Advisor
来源: http://www.bubuko.com/infodetail-2491652.html