当前位置:  数据库>sqlserver

数据库cpu很高,io很低的问题分析

    来源: 互联网  发布时间:2014-08-29

    本文导语:  问题: 项目上线后,日常情况下每天大约有8万的业务量,这时候oracle数据库主机的cpu大约为30%左右,但是当有批量业务的时候,比如一小时有20万的业务量的时候,数据库主机的cpu就达到99%左右了,但是io的大小却只有平时的1...

问题:
项目上线后,日常情况下每天大约有8万的业务量,这时候oracle数据库主机的cpu大约为30%左右,但是当有批量业务的时候,比如一小时有20万的业务量的时候,数据库主机的cpu就达到99%左右了,但是io的大小却只有平时的1/7左右,表里面都建索引了,会进行很多insert、update、select操作,现在小弟想通过一个sql语句查询出查询出到底是程序中哪个sql语句消耗的cpu过多,同时请各位高手帮忙分析下数据库本身的哪些参数设置会对cpu的使用率影响较大?数据库cpu很高,io很低 是什么问题?

cpu高估计还是sql语句有问题,以下内容可以供大家参考。

1、检查系统  sar -u 5 5 

2、看谁在用CPU 
topas  ps -ef |grep ora
#检查第四列,C的大小(unit,100 per cpu) 

3、检查CPU数量
/usr/sbin/bindprocessor -q lsattr El proc0    

4、2种可能:    
1) A Background (instance) process      
2) An oracle (user) process #此种可能最大。    

5、如果是用户进程:
那么高CPU的主要原因有:    
Large Queries, Procedure compilation or execution, Space management and Sorting    

5.1、查看每个Session的CPU利用情况:   
select ss.sid,se.command,ss.value CPU ,se.username,se.program from v$sesstat ss, v$session se where ss.statistic# in (select statistic# from v$statname    where name = 'CPU used by this session') and se.sid=ss.sid and ss.sid>6 order by ss.sid;

5.2、比较上述Session,看那个session的CPU使用时间最多,然后查看该Session的具体情况:select s.sid, w.event, w.wait_time, w.seq#, q.sql_text from v$session_wait w, v$session s, v$process p, v$sqlarea q where s.paddr=p.addr and s.sid=&p and s.sql_address=q.address;

5.3、得到上述信息后,查看相应操作是否有hash joins 和 full table scans。如果有hash joins 和 full table scans那么必须创建相应的Index或者检查Index是否有效。
另外必须检查是否有并行的查询存在和同一时刻有多个用户在执行相同的SQL语句,如果有必须关闭并行的查询和任何类型的并行提示(hints);如果查询使用intermedia数据,那么为了减少总的Index大小,必须限制使用Intermedia的Worldlist。(try restricting the wordlist that intermedia uses to help reduce the total indexsize)。

6、上述方案只能根据已经运行完成的操作,对于正在执行的长时间操作只能等操作完成后才能检测得到。因此我们可以通过另外一个很好的工具来检测正在运行的长时间操作语句。v$session_longops,这个视图显示那些操作正在被运行,或者已经完成。每个process完成后会刷新本视图的信息。

7、怎样寻找集中使用CPU的Process:
很多时候会发现有N个Process在平均分享着CPU的利用率,这种情况唯一的可能性就是这些Process在执行着相同的Package或者Query.

这种情况:建议通过statspack,在CPU高利用率额时候运行几个快照,然后根据这些快照检查Statspack报告,检查报告中最TOP的 Query。然后使用 sql_trace and tkprof 工具去跟踪一下。同时检查buffer cache 的命中率是否大雨95%。

同时在报告中还需要检查一下table scans (long tables),看是否在报告生成期间有存在全表扫描。

8、另外还有一些不是特别重要的,但是也必须关心检查的参数可能消耗CPU。


    
 
 

您可能感兴趣的文章:

  • 分析型数据库 InfiniDB
  • Oracle中关数据库对象的统计分析
  • sql server中通过查询分析器实现数据库的备份与恢复方法分享
  • SQLServer中master数据库分析
  • oracle 数据库连接分析
  • 分析linxu下c++写的一个数据库的源代码。怎么下手? (百分求教)
  • Oracle数据库安全策略分析 (三)第1/2页
  • 基于MySQL数据库复制Master-Slave架构的分析
  • Oracle数据库安全策略分析(一)第1/2页
  • 深入分析关于Oracle数据库的备份策略
  • Oracle数据库后台进程的功能分析
  • Oracle数据库安全策略分析(二)
  • Oracle不同数据库间对比分析脚本
  • jdbc连接sql server数据库问题分析
  • Oracle 9i数据库中动态重配置深入分析
  • MySQL数据库服务器逐渐变慢分析与解决方法分享
  • (急)有劳分析关于websphere的出错:与数据库相连的应用程序已达到最大数目
  • Python 分析Nginx访问日志并保存到MySQL数据库实例
  • mysql+Spring数据库隔离级别与性能分析
  • SQLServer 2005 实现数据库同步备份 过程-结果-分析
  • 基于Key-Value的NOSQL数据库Redis的数据结构及常用相关命令介绍
  • 如何监控数据库的数据,如果数据库数据更改,就通知Server
  • 文档数据库mongodb与列式数据库hbase详细比较
  • 如何从数据库中或文本文件中提取数据到另一个数据库中?
  • SQL Server 2008如何进行数据库分离和附加详细介绍
  • 用JDBC连接Oracle数据库时,如何向数据库中写日期型数据(格式)?谢了!
  • nosql数据库levedb介绍及levedb最新版1.18下载安装
  • 我从JSP页将数据插入到oracle数据库中,为何汉字插入后数据库中显示为乱码呢?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 散分:Jbuilder6开发数据库应用请问你们都用什么数据库? 免费的数据库有那些?
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • sql数据库如何查询修改数据库恢复模式?
  • 应该怎么样将一个对象放入到数据库里?还有怎么将图片放进数据库?急~~
  • sql server 2005删除用户时“数据库主体在该数据库中拥有架构,无法删除”错误的解决办法
  • linux上安装oracle 数据库后,是否能写shell程序实现数据库的自动启动。
  • 使用php语句将数据库*.sql文件导入数据库
  • sql数据库修改数据库用户
  • java数据库连接池和数据库连接示例
  • 对数据库的查询结果resultset进行修改后,怎么将修改的信息传回给数据库
  • java中的数据库结果集可以被赋值吗,可以通过结果集的方法来更新数据库字段吗?
  • 请教在linux系统开发环境下,有没有db和dbf数据库引擎,如何使用这个数据库?
  • 手把手教你Oracle数据库导出数据库结构到PowerDesigner
  • 此数据库没有有效所有者,因此无法安装数据库关系图支持对象
  • linux下不知有什么小型的数据库?要求速度比较快,开销最小。并且支持单文件数据库及多表的
  • 将 Ghost 从 SQLite3 数据库迁移到 MySQL 数据库
  • 请问在java钟如何得到数据库中的记录总数,以及如何求数据库中一个字段的和?
  • 求数据库解决方案===求数据库解决方案
  • 各位老大,现在嵌入式数据库都有哪些啊,我的设备配置如下,不知能不能装个数据库呢?
  • 在jbuilder中调用一bean连接数据库没有问题,在jsp中调用就连接不上数据库
  • sql server 2008中备份集中的数据库备份与现有的xx数据库不同的解决方法
  • java开发数据库,一般是用JDBC-ODBC桥,还是JDBC驱动程序连接数据库呢?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3