oracle时间模型

Oracle在9i或者早期的版本,对于性能优化方面,主要采用命中率模型,后面的版本,也保留着命中率模型,
比如在awr报告中,Instance
Efficiency Percentages (Target 100%)就有关于buffer cache,library cache等相关的命中率。

命中率在性能优化时主要体现在:

  1. 当命中率不高时,可以通过参数的调整,提高命中率,从而可以提高系统的处理能力

不过命中率的弊端也显而易见:

  1. 命中率无法看到系统的cpu和IO处理能力的分配。

  2. 当系统存在性能问题时,比如:应用并发设计问题,锁争用等问题时,命中率无法有效的反映到。

所以,oracle引入了时间模型的概念:

这里有几个概念:

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

  2. 从数据库的角度等价于:数据库响应时间=cpu时间+等待时间。

  • elapse time:指时空上的物理时间

  • db time:db time反映系统整体的资源(cpu,IO)被oracle使用的百分比情况,以user call为视角

  • cpu time:指cpu的使用的有效时间

Db time= DB CPU+Foreground NO-Idle wait time + DB
CPU ON QUEUE

这里边:

  1. db cpu即数据库任务使用cpu的时间

  2. Foreground NO-Idle wait time:非空闲的等待(不包括backgroud进程)

  3. DB CPU ON QUEUE:这里代表的是ready to run,但没有获得cpu运行时间片的在队列中等待时间

下面对数据库进行cpu密集型的测试:


$ cat testcpu.sh
#!/bin/sh
. /home/oracle/.bash_profile
sqlplus -S /nolog<<EOF
conn /as sysdba
declare
cnt number;
p number;
begin
cnt:=dbms_random.value(1,1000000);
p:=dbms_random.value(1,1000000);
while(1>0) loop
cnt:=mod(cnt*p,1000000);
end loop;
end;
/
EOF
###################################################
cat thread.sh
#!/bin/sh
for((i=1;i<=16;i++))
do
/home/oracle/testcpu.sh &
done

分别16,32个线程进行压力测试:

thread    cpu    loadavg(1min)    db time        cpu time    elapse time
16 100% 16.08 31,138s 31,069s 34.45 (mins)
32 100% 31.81 54,812s 28,014s 30.16 (mins)

这里cpu被完全利用,cpu time大小为30*60*16=28,800s;(上面实验中取的awr时间在30分钟左右)
而db
time会随着线程数的增加有所增加,虽然可能没有获得cpu时间,但是在run queue队列上,也会计入db time。

下面看下具体的awr报告:


16个并发进程下:
<pre class="brush: sql; title: ; notranslate" title="">
Snap Id Snap Time Sessions Curs/Sess
--------- ------------------- -------- ---------
Begin Snap: 14551 18-Apr-12 23:00:25 36 2.1
End Snap: 14552 18-Apr-12 23:34:51 20 2.1
Elapsed: 34.45 (mins)
DB Time: 518.97 (mins)

Time Model Statistics DB/Inst: xxx Snaps: 14551-14552
-> Total time in database user-calls (DB Time): 31138.3s
-> Statistics including the word "background" measure background process
time, and so do not contribute to the DB time statistic
-> Ordered by % or DB time desc, Statistic name

Statistic Name Time (s) % of DB Time
------------------------------------------ ------------------ ------------
sql execute elapsed time 31,137.4 100.0
DB CPU 31,068.7 99.8
PL/SQL execution elapsed time 31,065.0 99.8
parse time elapsed 3.4 .0
hard parse elapsed time 3.3 .0
hard parse (sharing criteria) elapsed time 0.2 .0
hard parse (bind mismatch) elapsed time 0.1 .0
DB time 31,138.3 N/A
-------------------------------------------------------------


32个并发进程下:
Snap Id Snap Time Sessions Curs/Sess
--------- ------------------- -------- ---------
Begin Snap: 14552 18-Apr-12 23:34:51 20 2.1
End Snap: 14554 19-Apr-12 00:05:01 52 2.5
Elapsed: 30.16 (mins)
DB Time: 913.54 (mins)
Time Model Statistics DB/Inst: xxx Snaps: 14552-14554
-> Total time in database user-calls (DB Time): 54812.4s
-> Statistics including the word "background" measure background process
time, and so do not contribute to the DB time statistic
-> Ordered by % or DB time desc, Statistic name

Statistic Name Time (s) % of DB Time
------------------------------------------ ------------------ ------------
sql execute elapsed time 54,811.1 100.0
PL/SQL execution elapsed time 54,776.6 99.9
DB CPU 28,013.8 51.1
parse time elapsed 2.8 .0
hard parse elapsed time 2.6 .0
hard parse (sharing criteria) elapsed time 2.5 .0
hard parse (bind mismatch) elapsed time 0.2 .0
DB time 54,812.4 N/A

了解了awr里的时间模型:那么接下来:

  

1,等待事件
  oracle记录埋点的事件所花费的时间,不同的版本等待事件略有差异。
  查询v$system_event来监控到oracle各种等待时间的时间,就可以诊断数据库的性能瓶颈了。

2,top
sql:
  oracle在sql的执行监控中记录了八个时间:
  APPLICATION_WAIT_TIME,CONCURRENCY_WAIT_TIME,CLUSTER_WAIT_TIME,USER_IO_WAIT_TIME,PLSQL_EXEC_TIME,JAVA_EXEC_TIME,CPU_TIME,ELAPSED_TIME。
  oracle可以根据这些时间来监控sql的执行情况。

oracle时间模型,码迷,mamicode.com

时间: 2024-08-26 11:29:22

oracle时间模型的相关文章

通过案例学调优之--Oracle Time Model(时间模型)

通过案例学调优之--Oracle Time Model(时间模型) 数据库时间  优化不仅仅是缩短等待时间.优化旨在缩短最终用户响应时间和(或)尽可能减少每个请求占用的平均资源.有时这些目标可同时实现,而有时则需要进行折衷(如在并行查询时).通常可以认为,优化就是避免以浪费的方式占用或保留资源. 对数据库发出的任何请求都由两个不同的段组成:等待时间(数据库等待时间)和服务时间(数据库 CPU 时间).等待时间是各种数据库实例资源的所有等待时间的总和.CPU 时间是实际处理请求时消耗的时间的总和.

oracle命中率模型计算

命中率模型是在owi之前比较常用的一种诊断性能问题的方法,通过命中率的计算,发现系统中的一些设置是否合理,当命中率不高的时候,通过调整一些参数和设置,提高命中率,有效的提高系统的性能和吞吐量.但当系统的命中率很高的时候,系统的性能问题和瓶颈就无法使用命中率模型来有效的定位,因为命中率说到底是一种平均值,而均值会隐藏系统的问题,这里暂且讨论oracle系统上几个相关的命中率的计算.另外会再讨论owi模型. 在awi的报告中,首先是oracle实例和snapshot信息,然后就是report sum

Oracle时间日期函数

ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02   13:45:25为例)           Year:              yy two digits 两位年                显示值:07        yyy three digits 三位年                显示值:007        yyyy four digits 四位年                显示值:2007                    Month

oracle 时间函数

加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add_months(sysdate,1) from dual; --加1月 select sysdate,to_char(sysdate+7,'yyyy-mm-dd HH24:MI:SS') from dual; --加1星期 select sysdate,to_char(sysdate+1,'yyyy-mm-dd HH24:MI:SS') from

oracle时间数据格式的分析

在网上看见不少oracle新学者对oracle的时间格式很烦,经常是设计了一个带时间字段的表之后,向表插入数据失败.回想起自己刚开始学习oracle时,也对这个时间格式摸不着头脑,虽然是小小的问题,高手们不屑于讨论,但对初学者来讲,这也是一个不大不小的坎,没找到门路的话, 可能几天都过不去,其实就是一层窗户纸,没什么难的.这里做一个简单的小结,因水平有限,请高手补充指正. 1 oracle对时间格式的数据存贮 oracle数据库中存放时间格式的数据,是以oracle特定的格式存贮的,占7个字节,

oracle时间处理

--查询日期语言种类 select * from V$NLS_PARAMETERS; select * fromnls_session_parameters --TO_DATE(null)的用法(插入null字段??) select 1, TO_DATE(null) from dual; --实际时间2012-12-04 18:22  测试结果如下: --24小时显示方式---需用  HH24:mi:ss这个形式 select to_char(sysdate,'yyyy-MM-dd HH24:m

衍型生Eliis.PaleoScan.v2015.1.0.17689.x64地质时间模型在解释三维地震

衍型生Eliis.PaleoScan.v2015.1.0.17689.x64地质时间模型在解释三维地震 PaleoScan建立一个地质时间模型在解释三维地震.如果你想获得更多的从你的数据,PaleoScan为您提供了一个快速和强大的方式来理解地层和结构. 由于基于全局最小化方法的一种新方法,PaleoScan的目的是直接从地震信息计算地质时间模型.这种技术改进了解释的质量和大大减少的时间周期相比,传统技术.此外,PaleoScan提出一套基于地质时间模型衍生的应用,将在更好地了解地质和整个地震体

【Oracle】Oracle时间日期格式

to_date("要转换的字符串","转换的格式")   两个参数的格式必须匹配,否则会报错. 即按照第二个参数的格式解释第一个参数. to_char(日期,"转换格式" ) 即把给定的日期按照"转换格式"转换. 转换的格式: 表示year的:y 表示年的最后一位 yy 表示年的最后2位 yyy 表示年的最后3位 yyyy 用4位数表示年 表示month的:mm 用2位数字表示月:mon 用简写形式 比如11月或者nov :m

oracle 时间格式

转载 :出处  http://www.2cto.com/database/201209/154722.html设置Oracle PL/SQL时间显示格式NLS_TIMESTAMP_FORMAT Oracle中TIMESTAMP时间的显示格式 Oracle数据库的时间字段我们通常是使用timestamp 格式,在未做设置前, 查询出来的数据类似于“27-1月 -08 12.04.35.877000 上午”, 经过to_char函数转换后得到如下结果:“2008-01-27 00:04:35:877