ORACLE数据库的优化

发表于:2014-6-09 10:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:gaojiehz    来源:51Testing软件测试网采编

  CPU参数的调整
  CPU是服务器的一项重要资,服务器良好的工作状态是在工作高峰时CPU的使用在90%以上。如果空闲时间CPU使用率就在90%以上,说明服务器缺乏CPU资源,如果工作高峰时CPU使用率仍然恨低,说明服务器CPU资源还比较富余。
  使用操作相同命令可以看到CPU的使用情况,以般UNIX操作系统的服务器,可以使用sar–u命令查看CPU的使用率,NT操作系统的服务器,可以使用NT的性能管理器来查看CPU的使用率。
  数据库管理员可以通过查看v$sysstat(select*fromv$sysstat wherenamelike'CPU%')数据字典中“CPUused by this session”统计项得知ORACLE数据库使用的CPU时间,查看“OS Userlevel CPU time“统计项得知操作系统用户态的CPU时间,查看“OS Systemcall CPU time“统计项得知操作系统系统态下的CPU时间,操作系统总的CPU时间就是用户态和系统态时间之和,如果ORACLE数据库使用的CPU时间占操作系统总的CPU时间90%以上,说明服务器CPU基本上被ORACLE数据库使用着,这是合理,反之,说明服务器CPU被其它程序占用过多,ORACLE数据库无法得到更多的CPU时间。
  数据库管理员还可以通过查看v$sesstat数据字典来获得当前连接ORACLE数据库各个会话占用的CPU时间,从而得知什么会话耗用服务器CPU比较多。(select*fromv$sysstat orderbyvaluedesc)
  出现CPU资源不足的情况是很多的:SQL语句的重解析、低效率的SQL语句、锁冲突都会引起CPU资源不足。
  1、数据库管理员可以执行下述语句来查看SQL语句的解析情况:
  SELECT * FROM V$SYSSTAT
  WHERE NAME IN
  ('parse time cpu', 'parse time elapsed', 'parse count (hard)');
  这里parse time cpu是系统服务时间,parse timeelapsed是响应时间,用户等待时间
  waite time = parse time elapsed – parse time cpu
  由此可以得到用户SQL语句平均解析等待时间=waite time / parse count,这个平均等待时间应该接近于0,如果平均解析等待时间过长,数据库管理员可以通过下述语句
  SELECTSQL_TEXT, PARSE_CALLS, EXECUTIONS FROM V$SQLAREA
  ORDER BY PARSE_CALLS;
  来发现是什么SQL语句解析效率比较低。程序员可以优化这些语句,或者增加ORACLE参数SESSION_CACHED_CURSORS的值。
  2、数据库管理员还可以通过下述语句:
  SELECT BUFFER_GETS, EXECUTIONS, SQL_TEXT FROMV$SQLAREA;
  查看低效率的SQL语句,优化这些语句也有助于提高CPU的利用率。
  3、数据库管理员可以通过v$system_event(select*fromv$system_event where event like'_atch%';)数据字典中的”latchfree“统计项查看ORACLE数据库的冲突情况,如果没有冲突的话,latch free查询出来没有结果。如果冲突太大的话,数据库管理员可以降低spin_count参数值,来消除高的CPU使用率。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号