文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程MSSQL最耗资源的SQL 写程序时千万注意
精品推荐
特别推荐
·SQL Server企业管理器和查询分析器简介
·常用SQL语句词典
·结束SQL注入隐患3招
·掌握SQL Server数据库的实用技巧
·SQL的简单查询
·快速解决SQL Server“安全疑难”相关问题
·SQL Server 2005:你应知道的13件事
·实例解析:减少SQL日志大小的三个好方法
·使用SQL2000将现有代码作为Web服务提供
·sql server 2000数据库置疑的解决方法
热点TOP10
·巴塞尔新资本协议概述
·SQL server 2005安装问题汇总
·SQL Server企业管理器和查询分析器简介
·将sql server中的自动增长序列,初始化为某一值!
·SQL进行排序、分组、统计的10个新技巧
·把SQL SERVER里表里的数据导出成为insert into 脚本
·Sql数据库MDF数据文件数据库恢复
·SQL Server关于SQL Agent使用技巧
·触发器对SQL Server数据库进行备份
·掌握SQL Server数据库的实用技巧

最耗资源的SQL 写程序时千万注意

日期:2007年10月16日 作者: 查看:[大字体 中字体 小字体]


  一般来说,调优的第一手资料,很可能就是典型业务期的一个statspack报告,那么如何根据statspack报告来判断是哪些SQL消耗了最多的系统资源?哪些SQL是最需要调整的呢?这里给出了一个大致的优化思路。当然,思路是死的,人是活的,优化也需要随需应变。

  一般来说,需要关注下面四种Top SQL

  消耗最多CPU的(逻辑IO过多)
  导致过多物理I/O的
  执行次数较频繁的
  执行时间较长的
  我们知道,一个语句的响应时间有个很著名的公式:

  响应时间=服务时间+等待时间

  其中服务时间就是CPU为执行该语句花费的时间。

  服务时间=分析时间+递归时间+执行时间

  分析时间是CPU用于分析语句的时间,递归时间是CPU用于语句的递归SQL的时间,剩下的则就是CPU用于执行语句的真正时间了。

  那么,上面的这些时间信息从哪里来的?Oracle提供的系统统计信息中就有部分的时间统计信息:

  服务时间=CPU used by this session

  分析时间=parse time cpu

  递归时间=recursive cpu usage

  那么,执行时间就可以根据上面三个统计信息计算得出:

  执行时间=CPU used by this session - parse time cpu - recursive cpu usage

  如果执行时间在整个响应时间中占较大的比例,那么下一步就是找出那些造成了最多逻辑IO的SQL语句,可以从statspack报告的SQL ordered by Gets部分找到。

  如果分析时间在整个响应时间中占较大的比例,那么下一步就是查找哪些SQL分析过多,这在statspack报告中在SQL ordered by Parse Calls中列出。

  如果等待时间在整个响应时间中占较大的比例,并且主要是块读取相关的等待时,下一步就是找出哪些SQL造成了过多的物理读,可以查看statspack报告中的SQL ordered by Reads部分。

  那么,根据上面列出的一个简单的原则,我们需要关注三个关于CPU时间的统计信息: CPU used by this session, parse time cpu和recursive cpu usage,以及top5等待事件中和IO相关的等待时间。如果是其他的一些等待事件出现在Top5中,那么可能需要根据不同的等待事件来分析原因了。然后优先调优时间消耗最多的相关SQL。

  除了上面的SQL ordered by Gets(逻辑IO最多),SQL ordered by Parse Calls(软解析过多),SQL ordered by Reads(物理IO过多),statspack还按照其他的一些方式列出了Top SQL,这些Top SQL在某些情况下都是需要给予特别关注的。比如:

  SQL ordered by Executions 执行次数超过100的

  SQL ordered by Sharable Memory 占用library cache超过1M的

  SQL ordered by Version Count 子cursor超过20的

  如果没有statspack,那么根据v$sysstat/v$sesstat中的统计信息,结合v$sql/v$sqlarea,一样可以得到相关的SQL。

  v$sql对于每一个子cursor都有一行统计记录,而v$sqlarea则对同一个父cursor只有一行统计记录,也就是v$sqlarea是对v$sql按照父cursor进行group by后的一个结果。这两个视图中都有诸如buffer_gets,parse_calls,disk_reads,,executions,sharable_mem等列,和上面提到的statspack中列出Top SQL的条件对应。

(出处:清风网络学院






上一篇:如何对Win 2000/2003系统DNS进行迁移

下一篇:Microsoft .NET Framework 的版本

相关文章:
·网站优化需要重要注意的几点事项
·网上英语学习资源大整理
·爱拼才会赢:80后千万富翁刘琦开
·组建双通道内存需要特别注意事项
·视频下载不求人 突破封锁保存各类视频资源
·微软提供Office 2003资源套件工具下载
·网管员在日常维护局域网时的几点注意事项
·学习网页设计时要注意HTML向XHTML转化
·易载ezPeer,资源无限分享
·做成功商人 千万别犯六大忌讳
相关软件:
·帝国时代II:征服者 所有资源修改器
·大英百科全书2006顶级资源中心版
·PE(*.EXE,*.DLL,*.OCX等)文件图像资源浏览器
·我要论坛资源网整站程序
·佳宜人力资源管理软件 V2.35 单机版
·人力资源管理考试百宝箱 V3.0
·天猴人力资源管理系统 V2.0
·人力资源岗位职责表
·经济师题库 人力资源专业 V1.1
·人力资源管理(吉林大学 马克立)

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot