Heim  >  Artikel  >  Datenbank  >  Oracle时间信息特性

Oracle时间信息特性

WBOY
WBOYOriginal
2016-06-07 15:14:121006Durchsuche

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入 在监控、诊断、处理数据库性能问题的时候,时间信息往往是非常重要的判断依据。有时候可能我们会使用一些比例来判断性能,但是使用比例而不使用时间往往会将我们带向错误的方向。在Oracle9i的第一版

欢迎进入Oracle社区论坛,与200万技术人员互动交流 >>进入

    在监控、诊断、处理数据库性能问题的时候,时间信息往往是非常重要的判断依据。有时候可能我们会使用一些比例来判断性能,但是使用比例而不使用时间往往会将我们带向错误的方向。在Oracle9i的第一版中关于时间的信息被进行了增强,提供了更多更有益的时间信息。除了9i的外貌发生了变化,在一些并没有被我们注意或者不为人知得一些v$视图的相关字段也发生了变化。这里提到的主要是他们发生了那些改变以及对DBA有什么帮助。这里也列出了零星的一些Oracle内部的未公开的信息。

  Second 1 秒
  Centi-second 1/100 百分之一秒 厘秒
  Milli Second 1/1000 千分之一秒 毫秒
  Micro Second 1/1.000.000 微妙
  Nano Second 1/1.000.000.000 纳秒

  在以前的版本中,Oracle的时间计量单位是厘秒,使用厘秒最显而易见的问题就是可能有些操作是小于厘秒的。看上去这似乎不太常见,但是实际上在操作系统上很多操作都是以微妙作为单位的,这意味着操作的起始和终止在不到厘秒就完成了,从厘秒级看就好像没有发生一样,因为持续时间近似为0。而有时候操作的持续时间不到厘秒,但是起始和终止发生在两个相连的厘秒,所以操作时间不到厘秒但是却被记录为厘秒,造成时间记录的不准确。

  在Oracle9i之前,最小的时间单位仍然是厘秒,这可以在跟踪文件、v$system_event和v$session_event中的超时字段看到。在9i之前,是不能在联机状态看到sql语句的执行(cpu消耗)时间和持续时间的,也不能看到一条Sql语句在等待着什么,实际上只有一种方法可以得到这些信息,就是通过启用10046 trace level 12的跟踪事件。这样做也会带来下面的一些问题:
  1. 生成进程跟踪文件带来很高的性能开销
  2. 如果有太多用于帮助调优的sql语句执行,将会产生大量的磁盘/文件空间需求。

  在oracle9i第一版中的持续时间以微妙作为时间单位,这能够显示出Oracle真正花费的时间。超时仍然以微妙作为计时单位。一些视图被扩展以便记录微妙数据。所有的时间信息由初始化参数timed_statistics 决定。

  一些视图的改变:
  V$SQLAREA:
  两个字段被加入到V$SQLAREA中,分别是CPU_TIME 和ELAPSED_TIME。两个字段都被设置为微妙级。然而,在这里可能会s看到一个有趣的现象:

<div twffan="done">
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" ><span>Select</span><span> cpu_time, elapsed_time
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" ></span><span>From</span><span> v$sqlarea
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" ></span><span>Order</span><span> </span><span>by</span><span> </span><span>2</span><span>
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" >CPU_TIME ELAPSED_TIME
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" ></span><span>--</span><span>-------- ------------</span><span>
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" ></span><span>230000</span><span> </span><span>174567</span><span>
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" ></span><span>260000</span><span> </span><span>258803</span><span>
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" ></span><span>260000</span><span> </span><span>271808</span>
</div>

  首先:三行中的第二行显示出了持续时间小于cpu执行时间,实际的情况是cpu字段记录单位是微妙级,但是数据被进位保留到了厘秒级。

  Sql语句的等待时间等于ELAPSED_TIME减去CPU_TIME,但是很难看到精确的等待时间。在V$SYSTEM_EVENT 视图中能够看到数据库实例级的等待时间(并不是每条Sql语句的),但是看不到发生在操作系统上(cpu等待、内存的等待)的等待时间s。

  X$KSQST的改变 (对应视图V$ENQUEUE_STAT)

  基础表X$KSQST主要显示关于系统中队列的信息。在9i之前只能提供队列类型的get和wait数。一个队列有两种特征和两个标识组成(id1 and id2)。例如一个叫做TX队列,表示一个事务队列。从Oracle9i开始不但能够看到gets 和waits,而且等待的时间和得不到队列(中断或者超时)的失败次数都可以看到。

  X$KSQST
  KSQSTWTIM NUMBER 以微妙作为单位

  然而这里仍不能将队列等待与Sql语句关联,也不能够得到等待队列的Sql语句到底等待了多久。下面的一个新的视图v$enqueue_stat 将提供关于队列得更多信息:

<div twffan="done">
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" ><span>V$ENQUEUE_STAT
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" >INST_ID </span><span>NUMBER</span><span>
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" >EQ_TYPE </span><span>VARCHAR2</span><span>
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" >TOTAL_REQ# </span><span>NUMBER</span><span>
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" >TOTAL_WAIT# </span><span>NUMBER</span><span>
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" >SUCC_REQ# </span><span>NUMBER</span><span>
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" >FAILED_REQ# </span><span>NUMBER</span><span>
<img  src="/inc/test.jsp?url=http%3A%2F%2Foracle.chinaitlab.com%2FUploadFiles_7269%2F200611%2F20061129105312174.gif&refer=http%3A%2F%2Foracle.chinaitlab.com%2Finduction%2F531598.html" alt="Oracle时间信息特性" >CUM_WAIT_TIME </span><span>NUMBER</span>
</div>

 

[1] [2] [3] 

Oracle时间信息特性

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn