首页 > 知识点讲解
       SQL Server监控
知识路径: > 信息系统数据资源维护 > 信息系统数据资源例行管理 > SQLServer监控技术 > 
相关知识点:69个      
        以下介绍一下如何诊断SQL Server数据库性能问题。使用SQL事件探查器和性能监控工具有效地诊断性能问题
        在SQL Server应用领域SQL事件探查器可能是最著名的性能故障排除工具,大多数情况下,当得到一个性能问题报告后,一般首先启动它进行诊断。
        SQL事件探查器是一个跟踪和监控SQL Server实例的图形化工具,主要用于分析和衡量在数据库服务器上执行的TSQL性能,可以捕捉服务器实例上的每个事件,将其保存到文件或表中供以后分析。例如,如果生产数据库速度很慢,可以使用SQL事件探查器查看哪些存储过程执行时耗时过多。
               SQL事件探查器的基本用法
               (1)启动SQL事件探查器,连接到目标数据库实例,创建一个新跟踪,指定一个跟踪模板(跟踪模板预置了一些事件和用于跟踪的列),如下图所示。
               
               选择跟踪模板
               (2)作为可选的一步,还可以选择特定事件和列,如下图所示。
               
               选择跟踪过程要捕捉的事件
               (3)另外还可以单击“组织列”按钮,在弹出的窗口中指定列的显示顺序,单击“列过滤器”按钮,在弹出的窗口中设置过滤器,例如,通过设置数据库的名称(在like文本框中),只跟踪特定的数据库,如果不设置过滤器,SQL事件探查器会捕捉所有的事件,跟踪的信息会非常多,如下图所示。
               
               过滤器设置
               (4)运行事件探查器,等待捕捉事件。
               (5)跟踪了足够的信息后,停掉事件探查器,将跟踪信息保存到一个文件中,或者保存到一个数据表中,如果保存到表中,需要指定表名,SQL Server会自动创建表中的字段。
               (6)执行下面的SQL查询语句找出执行代价较高的TSQL,如下图所示。
               
               
               查找执行成本较高的TSQL/存储过程
               有效利用SQL事件探查器排除与性能相关的问题
               SQL事件探查器除了可以用于找出执行成本最高的那些TSQL或存储过程外,还可以利用它许多强大的功能诊断和解决其他不同类型的问题。当收到一个性能问题报告后,或者想提前诊断潜在的性能问题时都可以使用SQL事件探查器。下面是一些SQL事件探查器使用技巧。
                      使用现有的模板,但需要时应创建自己的模板
                      
                      创建一个新模板
                      大多数时候现有的模板能够满足需求,但当诊断一个特殊类型的数据库性能问题时(如数据库发生死锁),可能需要创建自己的模板,在这种情况下,可以单击“文件”|“模板”|“新建模板”创建一个新模板,如上图所示。需要指定模板名、事件和列,如下图所示。当然也可以从现有的模板修改而来。
                      
                      为新模板指定事件和列
                      捕捉表扫描(TableScan)和死锁(DeadLock)事件
                      可以使用SQL事件探查器监听这两个有趣的事件。
                      先假设一种情况,假设已经在测试库上创建了合适的索引,经过测试后,现在已经将索引应用到生产服务器上了,但由于某些不明原因,生产数据库的性能一直没达到预期的那样好,推测执行查询时发生了表扫描,希望有一种方法能够检测出是否真的发生了表扫描。
                      再假设另一种情况,假设已经设置好了将错误邮件发送到一个指定的邮件地址,这样开发团队可以第一时间获得通知,并有足够的信息进行问题诊断。某一天,突然收到一封邮件说数据库发生了死锁,并在邮件中包含了数据库级别的错误代码,需要找出是哪个TSQL创造了死锁。
                      这时可以打开SQL事件探查器,修改一个现有模板,使其可以捕捉表扫描和死锁事件,修改好后,启动事件探查器,运行应用程序,当再次发生表扫描和死锁事件时,事件探查器就可以捕捉到,利用跟踪信息就可以找出执行代价最高的TSQL。
                      注意:从SQL Server日志文件中可能也可以找到死锁事件记录,在某些时候,可能需要结合SQL Server日志和跟踪信息才能找出引起数据库死锁的数据库对象和TSQL。
                      创建重放跟踪
                      某些时候,为了解决生产数据库的性能问题,需要在测试服务器上模拟一个生产环境,这样可以重演性能问题。使用SQL事件探查器的TSQL_Replay模板捕捉生产库上的事件,并将跟踪信息保存为一个.trace文件,然后在测试服务器上播放跟踪文件就可以重现性能问题是如何出现的了。
                      创建优化跟踪
                      数据库调优顾问是一个伟大的工具,它可以提供很好的调优建议,但要真正从它那获得有用的建议,需要模拟出与生产库一样的负载,也就是说,需要在测试服务器上执行相同的TSQL,打开相同数量的并发连接,然后运行调优顾问。SQL事件探查器的Tuning模板可以捕捉到这类事件和列,使用Tuning模板运行事件探查器,捕捉跟踪信息并保存,通过调优顾问使用跟踪文件在测试服务器上创建相同的负载。
                      捕捉ShowPlan在事件探查器中包括SQL执行计划
                      有时相同的查询在测试服务器和生产服务器上的性能完全不一样,假设遇到这种问题,应该仔细查看一下生产数据库上TSQL的执行计划。但问题是现在不能在生产库上执行这个TSQL,因为它已经有严重的性能问题。这时SQL事件探查器可以派上用场,在跟踪属性中选中ShowPlan或ShowPlan XML,这样可以捕捉到SQL执行计划和TSQL文本,然后在测试服务器上执行相同的TSQL,并比较两者的执行计划,如下图所示。
                      
                      在事件探查器跟踪中的执行计划
               使用性能监视工具(PerfMon)诊断性能问题
               当数据库遇到性能问题时,大多数时候使用SQL事件探查器就能够诊断和找出引起性能问题的背后原因了,但有时SQL事件探查器并不是万能的。
               例如,在生产库上使用SQL事件探查器分析查询执行时间时,对应的TSQL执行很慢(假设需要10秒),但同样的TSQL在测试服务器上执行时间却只要200毫秒,通过分析执行计划和数据列,发现它们都没有太大的差异,因此在生产库上肯定有其他问题,那该如何揪出这些问题呢?
               此时性能监视工具(著名的PerfMon)可以派上用场,它可以定期收集硬件和软件相关的统计数据,还有它是内置于Windows操作系统的一个免费的工具。
               当向SQL Server数据库发送一条TSQL语句时,会产生许多相关的执行参与者,包括TSQL执行引擎、服务器缓存、SQL优化器、输出队列、CPU、磁盘I/O等,只要这些参与者任何一环执行节奏没有跟上,最终的查询执行时间就会变长,使用性能监视工具可以对这些参与者进行观察,以找出根本原因。
               使用性能监视工具可以创建多个不同的性能计数器,通过图形界面分析计数器日志,此外还可以将性能计数器日志和SQL事件探查器跟踪信息结合起来分析。
               性能监视器基本用法介绍
               Windows内置了许多性能监视计数器,安装SQL Server时会添加一个SQL Server性能计数器,下面是创建一个性能计数器日志的过程。
               
               启动性能监视工具
               (1)在SQL事件探查器中启动性能监视工具(“工具”|“性能监视器”),如上图所示。
               
               为性能计数器日志指定名字
               (2)右击“数据收集器集”|“用户定义”|“新建数据日志”|“手动创建”,输入数据收集器集名称,单击“下一步”,如上图所示。勾选“性能计数器”复选框,单击“完成”按钮,创建一个新的性能计数器日志,如下图所示。
               
               创建一个性能计数器日志
               (3)单击“添加”按钮,选择一个需要的计数器,可以指定收集计数器数据的间隔时间,如下图所示。
               
               为性能计数器日志指定计数器
               (4)从列表中选择要监视的对象和选定对象的实例,单击“确定”按钮,如下图所示。
               
               指定对象和对应的计数器
               (5)选择的计数器应显示在窗体中,如下图所示。
               
               指定计数器
               (6)右击刚建的数据收集器,然后单击“目录”标签,指定日志文件保存位置,如果需要还可以修改日志文件名,如下图所示。
               
               指定性能计数器日志文件保存位置
               (7)右击“计划”标签,然后单击“添加”按钮,指定计数器开始和结束日期,如下图所示。
               
               指定性能计数器日志运行时间
               (8)单击“停止条件”标签,设置计数器停止条件,如下图所示。
               
               设置计数器停止条件
               单击“完成”,选择刚刚创建的计数器日志,右击,单击“开始”按钮,如下图所示。
               
               启动性能计数器日志
               
               查看性能计数器日志
               (9)为了查看日志数据,再次打开性能监视工具,单击查看日志图标(红色),在“来源”标签上选中“日志文件”单选按钮,单击“添加”按钮添加一个日志文件。如上图所示。查看日志数据时可以追加计数器,单击“确定”,如下图一所示,返回图形化的性能计数器日志输出界面,如下图二所示。
               
               查看日志数据时追加计数器
               
               查看性能计数器日志
 
 相关知识点:
检查一些扩展异常的对象
检查Oracle初始化文件中相关参数..
检查排序区
检查表空间使用情况
存储介质借用管理
检查死锁及处理
表的重构
数据库例行维护
检查backup卷中文件产生的时间
检查表空间的I/O比例
检查Oracle实例状态
检查失效的索引
健康检查
检查所有回滚段状态
检查无效对象
检查文件系统的I/O比例
查看是否有僵死进程
空间释放
检查数据库的等待事件
检查当前crontab任务是否正常
检查用户修改密码
系统负载情况
Disk Read最高的SQL语句的获取
检查无效的trigger
检查Oracle数据库性能
数据库备份与恢复
检查system表空间内的内容
索引重建
检查缓冲区命中率
检查数据库基本状况
检查Oracle表空间的状态
检查行链接/迁移
查找前10条性能差的SQL
监控数据量的增长情况
检查Oracle相关资源的使用情况
检查Oracle数据库备份结果
检查对象的下一扩展与表空间的最..
检查系统磁盘空间
数据资源载体的管理
检查Oracle所有数据文件状态
检查共享池命中率
检查数据库备份日志信息
检查系统安全日志信息
检查日志缓冲区
数据库故障及恢复
数据资源例行管理计划
检查Oracle在线日志状态
数据库性能优化
数据库备份
其他检查
检查运行很久的SQL
系统I/O情况
检查不起作用的约束
检查数据库连接情况
检查消耗CPU最高的进程
数据分片
Oracle Job是否有失败
检查数据库安全性
检查数据库CPU、I/O、内存性能
数据库监测管理
内存使用情况
等待时间最多的5个系统等待事件的..
存储介质销毁管理
Oracle数据库监控
检查Oracle用户的Email
CPU使用情况
存储介质转储管理
检查碎片程度高的表
定期做统计分析
 
软考在线指南
优惠劵及余额
在线支付
修改密码
下载及使用
购买流程
取消订单
联系我们
关于我们
联系我们
商务合作
旗下网站群
高级资格科目
信息系统项目管理师 系统分析师
系统架构设计师 网络规划设计师
系统规划与管理师
初级资格科目
程序员 网络管理员
信息处理技术员 信息系统运行管理员
中级资格科目
系统集成项目管理工程师 网络工程师
软件设计师 信息系统监理师
信息系统管理工程师 数据库系统工程师
多媒体应用设计师 软件评测师
嵌入式系统设计师 电子商务设计师
信息安全工程师
 

本网站所有产品设计(包括造型,颜色,图案,观感,文字,产品,内容),功能及其展示形式,均已受版权或产权保护。
任何公司及个人不得以任何方式复制部分或全部,违者将依法追究责任,特此声明。
本站部分内容来自互联网或由会员上传,版权归原作者所有。如有问题,请及时联系我们。


工作时间:9:00-20:00

客服

点击这里给我发消息 点击这里给我发消息 点击这里给我发消息

商务合作

点击这里给我发消息

客服邮箱service@rkpass.cn


京B2-20210865 | 京ICP备2020040059号-5 |京公网安备 11010502032051号 | 营业执照 | Copyright ©2000-2023 All Rights Reserved 软考在线版权所有