SQLPLUS中autotrace traceonly stat統計資訊解讀

還不算暈發表於2013-10-30
BYS@bys1>set arraysize 200
BYS@bys1>set autotrace traceonly stat
BYS@bys1>select * from test2 order by 3;
72465 rows selected.

Elapsed: 00:00:00.57

Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
       1037  consistent gets
          0  physical reads
          0  redo size
    2909118  bytes sent via SQL*Net to client
       4401  bytes received via SQL*Net from client
        364  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
      72465  rows processed

recursive calls 遞迴呼叫,在使用者和系統級的遞迴呼叫。Oracle資料庫維護用於內部處理的表。當Oracle資料庫需要作出這些表的變化,它在內部產生一個內部SQL語句,這反過來又產生一個遞迴呼叫。
db block gets

在當前讀模式下所讀的塊數,比較少和特殊,是非一致性讀。例如資料字典資料獲取,在DML中,更改或刪除資料是要用到當前讀模式。通過update/delete/select for update讀的次數

consistent gets 一致性讀,在一致讀模式下所讀的快數,包括從回滾段讀的快數。
physical reads

物理讀,從磁碟讀取資料塊總數。這個數字等於“物理直接讀取”的價值,加上所有讀取到緩衝區快取記憶體。

redo size redo位元組產生的總量
bytes sent via SQL*Net to client 通過SQL*Net傳送到客戶端的位元組數
bytes received via SQL*Net from client 通過SQL*Net收到的從客戶端傳送的位元組數
SQL*Net roundtrips to/from client SQL*Net傳送和從客戶端接收往返總數
sorts (memory) 排序操作的數量完全在記憶體中進行的,並沒有要求任何磁碟寫入
sorts (disk) 排序操作的數量,需要至少一個磁碟寫入
rows processed 在操作過程中處理的行數


1、DB Block Gets(當前請求的塊數目)當前模式塊意思就是在操作中正好提取的塊數目,而不是在一致性讀的情況下而產生的塊數。

正常的情況下,一個查詢提取的塊是在查詢開始的那個時間點上存在的資料塊,當前塊是在這個時刻存在的資料塊,而不是在這個時間點之前或者之後的資料塊數目。

2、Consistent Gets(資料請求總數在回滾段Buffer中的資料一致性讀所需要的資料塊)這裡的概念是在處理你這個操作的時候需要在一致性讀狀態上處理多少個塊,

這些塊產生的主要原因是因為由於在你查詢的過程中,由於其他會話對資料塊進行操 作,而對所要查詢的塊有了修改,但是由於我們的查詢是在這些修改之前呼叫的,

所以需要對回滾段中的資料塊的前映像進行查詢,以保證資料的一致性。這樣就產 生了一致性讀。

3、Physical Reads(物理讀)就是從磁碟上讀取資料塊的數量,其產生的主要原因是: 1、 在資料庫快取記憶體中不存在這些塊 2、 全表掃描 3、 磁碟排序

它們三者之間的關係大致可概括為:邏輯讀指的是Oracle從記憶體讀到的資料塊數量。一般來說是LOGIC IO(邏輯讀次數)= 'consistent gets' + 'db block gets'

當在記憶體中找不到所需的資料塊的話就需要從磁碟中獲取,於是就產生了'phsical reads'。


相關文章