SqlServer性能检测和优化工具使用详细.docx
《SqlServer性能检测和优化工具使用详细.docx》由会员分享,可在线阅读,更多相关《SqlServer性能检测和优化工具使用详细.docx(10页珍藏版)》请在冰豆网上搜索。
![SqlServer性能检测和优化工具使用详细.docx](https://file1.bdocx.com/fileroot1/2022-11/23/f4cf5f57-22ce-483f-8adf-e264a0764096/f4cf5f57-22ce-483f-8adf-e264a07640961.gif)
SqlServer性能检测和优化工具使用详细
工具概要
如果你的数据库应用系统中,存在有大量表,视图,索引,触发器,函数,存储过程,sql语句等等,又性能低下,而苦逼的你又要对其优化,那么你该怎么办?
哥教你,首先你要知道问题出在哪里?
如果想知道问题出在哪里,并且找到他,咱们可以借助本文中要讲述的性能检测工具--sqlserverprofiler(处在sql安装文件--性能工具--sqlserverprofiler)
如果知道啦问题出现在哪里,如果你又是绝世高手,当然可以直中要害,写段代码给处理解决掉,但是如果你不行,你做不到,那么也无所谓,可以借助哥的力量给你解决问题。
哥给你的武功的秘诀心法是---数据库引擎优化顾问(处在sql安装文件--性能工具--数据库引擎优化顾问)
sqlserverprofiler功能
此工具比柯南还柯南,因为他能检测到数据库中的一举一动,即便你不动他,他也在监视你,他很贱的。
他不但监视,还监视的很详细,有多详细一会再说,还把监视的内容记录到数据库或者是文件中,给你媳妇告状说你把数据库哪里的性能搞的多么不好,不过他也会把好的给你记录下来,好与不好这当然需要你来分析,其实他也是个很2的柯南。
数据库引擎优化顾问功能
此武功,乃上乘武功。
像张无忌的乾坤大挪移,先是接受sqlserverprofiler检测出来的sql,视图,存储过程,数据结构等等,然后他再自己分析,然后再在怀中转两圈,感觉自己转的差不多啦,就给抛出来个威力更炫,更好的索引,统计,分区等等建议信息。
让你承受不住,happly致死。
。
下面听哥给你先讲讲咱们的很2柯南。
sqlserverprofiler的使用
打开系统主菜单--sqlserver几---性能工具--->>sqlserverprofiler;笨样儿,找到没?
哥等你会儿,给你上张打开他后的图,让你看看。
。
然后文件--新建跟踪--显示跟踪属性窗口
首先那个select%是个筛选监测的TextData。
那个%是个通配符,他的意思就是筛选select开口的语句。
当然这你自己可以随便定义,如update%,delete%....。
把那个排除不包含值的行也给带上,然后确定,运行。
然后在数据库中运行一句select。
你会发现他检测到啦。
每列以此向右,从EventClass开始,我给你讲讲都是什么。
事件分类,申请了语句,应用程序名称,操作系统用户,数据库用户,cpu占用率,读数据库次数,写数据库次说,执行脚本用时,应用程序进程号,开始时间,结束时间等。
事件选择,你就把鼠标放上去,他下面有中文的注释。
自己好好看看,然后根据你自己的需要把事件勾选上来。
然后文件-->>另存为,可以把这些监测到的数据保存为文件,或数据表。
分析:
1.查找持续时间最长的查询
一般情况下,最长查询时间的查询语句就是最影响性能的原因存在。
它不仅占用数据库引擎大量的时间,还浪费系统资源,还影响数据库应用系统的交互速度。
再对数据用应用系统进行优化时,先找出他,对其优化,在创建跟踪时,勾上TSQL-SQL:
BatchCompleted.跟StoredProcedures-RPC:
completed。
这样就能找出来这个最长时间查询然后对其进行分析优化。
selectTextData,Duration,CPUfrom<跟踪的表>
whereEventClass=12--等于12表示BatchCompleted事件
andCPU<(0.4*Duration)--如果cpu的占用时间,小于执行sql语句时间的40%,说明该语句等待时间过长
2.最占用系统资源的查询
就是占用cpu时间,跟读写IO的次数。
建议事件包含Connect、Disconnect、ExistingConnection、SQL:
BatchCompleted、RPC:
completed,列包含writes,reads,cpu。
3.检测死锁
在访问量,并发量都很大的数据库中,如果设计稍不合理,就有可能造成死锁,给系统性能带来影响。
事件包含:
RPC:
Starting、SQL:
BatchStarting、Lock:
DeadLock(死锁事件)、Lock:
DeadLockChaining(死锁的事件序列)。
使用数据库引擎优化顾问分析解决数据库性能
打开系统主菜单--sqlserver几---性能工具--->>数据库引擎优化顾问,界面如下
打开之后,你在上一个工具中保存的的文件,你就在这里的工作负荷中选文件,表就选表。
选后别急。
把要分析的数据库跟数据库的表选上,也就是下面的用于工作负荷分析的数据库选择,跟下面的要优化的数据库和表,慢慢扣,把他选对。
然后选则你想要的优化选项
根据需要,选上,高级选项里面通常可以默认。
确定。
。
然后点左上角有一个开始分析。
分析完成
说到这里
我感觉这本武功绝学你已经拥有啦7成功力,以后就看你们自己的造化啦。
哥哥嘱托你多用,勤用,用脑,别用力,多喝六个核桃脑白金,开盖不要用牙咬。
哥哥去啦,生亦何欢,死亦何苦。
。
第四章——SQLServer2008-2012资源及性能监控
(1)
2013-02-2617:
44 15659人阅读 评论
(1) 收藏 举报
分类:
DBA(128)
SQLServer2012cookbook(35)
I/O(5)
数据库管理(213)
CPU(3)
最佳实践
(1)
性能优化(20)
常见问题(16)
系统网络(4)
目录(?
)[+]
性能优化的第一步是发现问题,而发现问题通常又有两类:
突发问题的侦测和常规问题的侦测,对于常规问题的侦测,通常需要有一个长效的性能监控作为依据。
本系列文章介绍
∙服务器性能监控
∙CPU使用率监控
∙内存使用率监控
前言:
当由于劣质的查询写法、缺失必要的索引或者数据库级别的其他情况所导致的性能问题时,可以通过使用执行计划、DMVs/DMFs、SQLTrace或者数据库引擎顾问(DTA)这些手段来查找问题的根源。
但是,如果性能问题发生在硬件或者操作系统级别(如CPU/内存/IO/网络问题等),就要使用一些复杂的工具来协助你找到性能问题。
因为这些进程运行在操作系统层面。
对于Windowsserver2008R2、Windows7这类新的操作系统,可以使用一个叫性能监视器(PerformanceMonitor),也叫可靠性和性能监视器(ReliabilityandPerfomanceMonitor)来实现更有效的监控。
在Windows中,有三个工具可以用来监控性能:
1、 资源监视器(ResourceMonitor)
2、 性能监视器(PerfomanceMonitor)
3、 可靠性监视器(ReliabilityMonitor)
资源监视器提供一个快速、实时及图形化界面来显示包括CPU、内存、I/O和网络使用情况的信息,可以监视和检查所有当前运行在机器上的进程的这部分信息。
并可以通过这个工具来结束你认为对性能有潜在风险的进程。
性能监视器提供实时性能监控的图形化界面工具,可以使用上百种性能计数器来跟踪性能数据。
并把数据存放到文件中供进一步分析所用。
可靠性监视器同样提供图形化界面,通过计算系统一段时期内的稳定性索引,来分析系统的稳定程度。
任何的问题都会降低这些系统稳定性索引。
这三种工具公用一个接口——微软管理控制台(MMC),可以合起来查看。
可靠性和性能监视器合成了这三个工具的的所有功能。
在本系列文章中,将熟悉资源监视器、可靠性和性能监视器,并演示如何使用这些工具来检查和监控硬件资源的性能。
监视服务器性能
当用户反应SQLServer所在的服务器响应速度非常慢时,将优先使用什么工具来快速查看服务器性能?
在过去,可能会使用任务管理器来实现,但是在今天,可以使用更强大的工具来查看服务器资源。
也就是资源监视器。
本文将给出一个如何使用资源监视器来监控硬件资源及服务器性能的快速入门。
准备工作:
1、 开发版或者企业版的SQLServer2008、2012。
2、 安装在Windows操作系统上的资源监视器。
从WindowsServer2008R2或者Windows7以后才出现。
3、 微软示例数据库AdventureWorks。
演示步骤:
1、 打开资源监视器,方法:
在【运行】中输入resmon.exe或者用快捷键Windows+R来输入。
2、 通过下图可以看到资源监视器有5个选项页。
第一个为概述页。
可以查看服务器的整体性能。
3、 如果想查看SQLServer服务所使用的CPU情况,可以点击第二个选项页【CPU】,并找到进程名为:
sqlservr.exe的那一行。
点击第一个窗口之后,下面的窗口会显示出相应的资源。
如图:
4、 如果想查看SQLServer使用的内存情况,可以使用步骤3中的方法,在第三个选项页【内存】中查看,如图:
5、 如果要检查服务器上活动的磁盘I/O,可以选择选项页【磁盘】,因为在前面已经选择了sqlservr.exe进程,所以这个页面显示的将会是SQLServer服务所引起的I/O活动。
可以连到SSMS中,输入以下脚本:
1.USE AdventureWorks
2.GO
3.SELECT *
4.FROM Sales.SalesOrderDetail WITH ( NOLOCK )
5.GO
6、 马上切换回资源监视器。
将会看到有I/O操作作用于AdventureWorks数据库文件上,如图:
分析:
本文中直观地展示了资源监视器的使用,资源监视器提供了CPU、内存、磁盘IO、网络方面的资源使用情况信息,它分成5个部分来展示相关信息:
1、 概述:
提供了其他4个选项页中包含的服务器资源信息。
当你发现产生性能问题的进程后,可以从这里结束掉。
2、CPU:
这个选项页提供CPU使用的百分比信息,也显示在概述页中显示的每个进程的详细CPU信息。
并可以看到对应进程的服务、关联句柄及关联模块。
在右边,还能看到试试的图形化的所有可用CPU的实时情况。
如果你找到CPU使用率非常高,就应该检查是什么使用着这些CPU资源。
3、内存:
这个选项页显示内存使用情况。
可以找到系统有多少内存、多少内存已经在使用、多少内存空闲。
还提供了每个进程的内存消耗情况。
资源监视器的最大优势是可以通过勾选特定进程来获取相应的资源信息。
4、磁盘:
这个选项页是显示各个进程对应的磁盘I/O活动,通过Read(B/Sec)和Write(B/Sec)列,可以看到特定进程的IO情况。
同时也可以看到某些文件上的IO活动。
右边显示当前IO的实时情况。
5、 网络:
显示出当前网络使用情况。
可以看到所有TCP连接所对应的不同的进程,也可以筛选特定进程。
扩展信息:
通过使用资源监视器,可以快速定位消耗硬件资源的进程。
同时可以查看网络方面的瓶颈。
在SQLServer生产环境中,如果你发现某些进程、应用程序耗费的资源比SQLServer还多,并已经影响到SQLServer的性能,你可以考虑把这些经常或者应用程序移到别的服务器,以使得SQLServer的性能不会收到太大的影响。