监视过程是这样的,首先要排除因为事务死锁导致的问题,然后是数据组织不合理导致硬盘I/O 过多的问题,接着是考虑是否内存过小导致硬盘I/O过多的问题,下一步是排除查询不够优化的性能问题,最后是排除CPU性能过低的问题。解决的思路如下: (要注意的是,性能监视的对象主要有三个:CPU,内存,硬盘.很多故障的排查工作都是围绕着这三个参数来进行的.)
1.收集问题发生的上下文信息,包括:做了什么操作,访问什么数据,什么时候做的、任务的紧急重要等级、主管需要解决到什么程度。
2.通过SQL SERVER活动监视器判断活动没有因为死锁处于挂起状态。
3.通过系统默认的三个监视对象,内存访问速度Pages/sec,磁盘访问频度Avg.disk,CPU占用比例%Process来发现哪方面的资源出现问题。
4.判断的顺序磁盘、内存、CPU。
5.根据任务的访问的数据表,类型情况,添加更加细致的计数器,监视可能的原因。使用SQL Profiler记录系统使用资源过程,发现导致问题原因。
6.分析原因(可以借助数据库优化顾问),并调整系统配置,然后循环执行第二步,监视再优化,直到完成性能优化。
一、Sql性能监视
1、性能监视过程
作用:发现SQL Server的性能问题,实现性能调优
解决思路
1).收集相关信息(时间、什么操作);
2).使用SQL活动监视器查看死锁进程;
3).使用系统性能工具监视磁盘、内存、CPU;
4).使用SQL Profiler工具监视SQL SERVER相关参数;
5).使用优化顾问分析监视结果,生成解决方案
2、SQL活动监视器:查看进程活动状态
作用:确认活动当前的状态是否被阻塞(阻塞常指用户进程由于其他用户进程而等待)
操作:查看阻塞语句à分析阻塞原因à强制断开阻塞进程
3、性能(系统)监视器:监视系统与SQL Server性能情况
系统监视器(也叫性能监视器)不仅可以监视整个系统的情况,如处理器、内存、磁盘,而且可以监视运行的SQL Server 实例的运行情况。在性能监视器中每个监视对象都有一个相关的计数器集,用于测量使用情况、队列长度、延时情况、吞吐量及内部拥塞等。通过这些信息可以诊断性能问题,识别系统瓶颈。系统监视器主要监控的作用就是用来监控SQL Server的性能的.主要包含对于对象,计数器和实例的监控.
SQL Server性能对象
系统性能对象
4、SQL Server Profiler
使用SQL Server Profiler可以跟踪SQL Server和数据库的活动,如登录账户、用户和应用程序的活动(如长时间运行的查询),数据库管理员还可以将捕获的数据保存到一个表或文件中以便于以后分析。Profiler不仅可以用来分析性能也可以起到安全审核的作用。
SQL Server Profiler可以被认为是一个记录器,它完整地记录了SQL Server的活动。它将记录所有要求的跟踪内容到屏幕、一个文件或是数据库的一个表中。当收集好跟踪数据之后,之后还可以重新加载它并且重放。
作用:跟踪SQL Server和数据库的活动(行为)
操作:通过跟踪,查看是否有死锁、阻塞状态,并且作为性能调优的依据。
二、数据库引擎优化顾问
1、作用:通过数据库引擎优化顾问对数据库负荷测试提出优化建议,并通过建议,优化。
2、操作
1)Sql Server Profiler跟踪SQL Server行为
2)行为文件à分析à提出优化建议à优化
3. 典型应用:
使用SQL Profiler分别在服务器忙时和闲时进行监视(3个小时),保存为.trc文件;使用优化顾问加载监视的.trc文件,进行分析,最后给出优化建议,根据优化建议进行优化。
三、数据库性能优化的常见问题
1、事务占用资源的时间过长,造成阻塞
避免一次连接多表查询
对于SQL语句使用统一规范,访问表的顺序要保持一致
更新频繁的场合,不允许执行查询操作
2、不合理的数据文件设置,影响事务处理的性能
文件不要设置过小(1G以上)
不要设置数据文件自动收缩
3、磁盘数据组织不合理,导致磁盘的访问次数过多
将查询与写入的表放置到不同的磁盘上(依靠文件组实现,添加新数据文件(.ndf))
将数据文件放置到不同的磁盘上
将经常同时查询的数据,放在同一个文件组上
将事务日之创建在单独磁盘或RAID设备上
将经常查询的表常驻内存
4、批量导入数据的时候,要进行特殊设置
大容量恢复模式:禁用索引---导入数据---重建索引