性能优化学习1

性能优化学习1
一.调优的目标:
1.减少响应时间
2.减少数据库块访问
3.尽量把常用的块CACHE到内存中,提高访问的速度
4.提高OLTP的吞吐量
5.设置系统的负载

二.数据库的系统响应时间:
response time = service time + wait time
service's meaning:cpu used by this session
select   *   from  v$sysstat t  where  t.name  = ' CPU used by this session ' ;

时间单位:9i以后单位是百万分之一秒
其中 Service Time = SQL解析时间 + 递归调用时间 + 其他时间

1.视图的使用
--实例级系统性能视图:v$sysstat
使用:(以CPU used by this session为例)
select   *   from  v$sysstat t  where  t.name  = ' CPU used by this session ' ;

--会话级系统性能试图:

select  a.STATISTIC#  from  v$statname a   where  a.NAME  like   ' %CPU used by this session% ' ;

找到STATISTIC#,代入到下面
--当前所有session的

select   *   from  v$sesstat b  where  b.STATISTIC#  =   & STATISTIC#;

--自己的session的

select   *   from  v$mystat c  where  c.STATISTIC#  =   & STATISTIC#;

--或者直接

select  b.sid, a.STATISTIC#, a.name, b.value
  
from  v$statname a, v$mystat b
 
where  a.STATISTIC#  =  b.STATISTIC#;
 
and  a.name  like   ' %xxxxxxx% '


2.sql解析时间(sql解析过程..比较重要,后面专门写一篇)

   select  name, sid, value "Total parse Cpu time"
          
from  v$statname a, v$mystat b
         
where  a.name  like   ' %parse% '
           
and  a.statistic#  =  b.statistic#


3.递归调用时间是用在语义分析阶段查找数据字典或者PLSQL内部包造成的解析所花的CPU时间

select   *   from  v$statname a   where  a.NAME  like   ' %recursive cpu% ' ;

实例级和会话级查询方法同上

4.其它CPU时间:通常占绝大多数,它是执行内存BUFFER搜索,索引和全表扫描涉及的IO操作所占有的CPU

select  a.VALUE  as  "Total CPU",
       b.VALUE 
as  "Parse CPU",
       c.VALUE 
as  "Recursive CPU",
       a.VALUE 
-  b.VALUE  -  c.VALUE  as  "Others"
  
from  v$sysstat a, v$sysstat b, v$sysstat c
 
where  a.NAME  =   ' CPU used by this session '
   
and  b.NAME  =   ' parse time cpu '
   
and  c.NAME  =   ' recursive cpu usage ' ;


5.等待常是由于并发,需要等待别的会话处理完独占的资源后所花的时间,这通常也是最常见的性能问题.
如果等待时间(wait time)占响应时间(Pesponse time)的大多数时,我们需要减小等待时间来提高系统性能。我们需要剥离等待时间来分析和优化等待时间

    select  d.EVENT, d.TIME_WAITED, d.AVERAGE_WAIT
     
from  v$system_event d
    
where  d.EVENT  not   in
          (
' pmon timer ' ' rdbms ipc message ' ' smon timer ' ,
           
' virtual circuit status ' ' SQL*Net message from client ' )

not in 里面的event通常被认为是不会产生等待的事件

三.相关视图
1.v$sysstat
这个使徒列出系统统计数据.为找到与每个统计数据号(STATISTIC#)关联的统计数据
名称,请参阅V$STATNAME.
列 数据类型 说明
STATISTIC# NUMBER 统计数据号
NAME VARCHAR2 统计数据名
CLASS NUMBER 统计数据类别:1(用户);2(重做);
4(排队);8(高速缓存);16(操
作系统);32(并行服务器);64
(SQL);128(调试)
VALUE NUMBER 统计数据值
CLASS NUMBER 统计数据类别:

2.v$sesstat
这个视图给出用户会话的统计数据.为了找到与每个统计数据号(STATISTIC#)有关的
统计数据名称,请参阅V$STATNAME.
列 数据类型 说明
SID NUMBER 会话标识符
STATISTIC# NUMBER 统计数据名(标识符)
VALUE NUMBER 统计数据值

3.v$mystat
这个视图包含当前会话的统计数据。
列 数据类型 说明
SID NUMBER 当前会话的ID
STATISTIC NUMBER 统计数据号
VALUE NUMBER 统计数据值

4.v$statname
这个视图显示列在V$SESSTAT 和V$SYSSTAT 表中的统计数据的解码统计数据名。详细信
息,请参阅V$SESSTAT 和SYSSTAT。
列 数据类型 说明
STATISTIC# NUMBER 统计数据号
NAME VARCHAR2 统计数据名。参见表B-13
CLASS NUMBER 1(用户);2(重做);4(排
队);8(高速缓存);16(操
作系统);32(并行服务器);
128(调试)


 

你可能感兴趣的:(性能优化学习1)