1. 程式人生 > >【跟我學oracle18c】第四十九天:Database 2 Day + Performance Tuning Guide: 2.1使用自動工作負載儲存庫收集資料庫統計資訊(AWR,ASH)

【跟我學oracle18c】第四十九天:Database 2 Day + Performance Tuning Guide: 2.1使用自動工作負載儲存庫收集資料庫統計資訊(AWR,ASH)

2.1 Gathering Database Statistics Using the Automatic Workload Repository

資料庫統計資訊提供關於資料庫上的負載型別以及資料庫使用的內部和外部資源的資訊。要使用ADDM準確診斷資料庫的效能問題,必須提供統計資訊。

累積統計量是一個計數,例如塊讀取的次數。Oracle資料庫為系統、會話和單個SQL語句生成許多型別的累積統計資訊。Oracle資料庫還跟蹤有關段和服務的累積統計資訊。自動工作負載儲存庫(Automatic Workload Repository, AWR)通過收集、處理和維護資料庫問題檢測和自調優目的的效能統計資訊來自動化資料庫統計資訊收集

預設情況下,資料庫每小時收集一次統計資訊,並建立一個AWR快照,這是一組用於效能比較的特定時間的資料。快照捕獲的delta值表示在一段時間內每個統計資料的變化。AWR收集的統計資料是從記憶體中查詢的。收集到的資料可以顯示在報告和檢視中。

以下初始化引數與AWR相關:

  • STATISTICS_LEVEL
    將此引數設定為TYPICAL(預設)或ALL,以啟用AWR收集統計資訊。將statistics s_level設定為BASIC將禁用許多資料庫特性,包括AWR,不推薦這樣做。

  • CONTROL_MANAGEMENT_PACK_ACCESS

    設定為診斷+調優(預設)或診斷,以啟用自動資料庫診斷監視。將CONTROL_MANAGEMENT_PACK_ACCESS設定為NONE將禁用許多資料庫特性,包括ADDM,並且強烈建議不要這樣做

    SQL> show parameter CONTROL_MANAGEMENT_PACK_ACCESS
    
    NAME                                 TYPE
    ------------------------------------ ----------------------
    VALUE
    ------------------------------
    control_management_pack_access       string
    DIAGNOSTIC+TUNING

     

See Also:

The database statistics collected and processed by AWR include:

2.1.1時間模型統計

時間模型統計按操作型別度量在資料庫中花費的時間。最重要的時間模型統計量是資料庫時間(DB時間)。DB時間表示前臺會話在資料庫呼叫中花費的總時間,是例項工作負載的指示器。如圖2-1所示,資料庫時間構成了應用程式總體使用者響應時間的一部分。

Figure 2-1 DB Time in Overall User Response Time

Description of Figure 2-1 follows
Description of "Figure 2-1 DB Time in Overall User Response Time"

會話是資料庫例項記憶體中的邏輯實體,它表示當前使用者登入到資料庫的狀態。資料庫時間是通過聚合所有活動會話(非空閒會話)的CPU時間和等待時間來計算的。對於任何資料庫請求,CPU時間是處理該請求所花費時間的總和,而等待時間是對各種資料庫例項資源的所有等待時間的總和。DB時間只包括花在客戶端程序上的時間,不包括花在PMON等後臺程序上的時間。

例如,使用者會話可能涉及線上書商進行的線上交易,該交易由圖2-2所示的操作組成。

Figure 2-2 DB Time in User Transaction

Description of Figure 2-2 follows
Description of "Figure 2-2 DB Time in User Transaction"

  1. 按作者查詢小說
    使用者搜尋特定作者的小說。此操作將導致應用程式對作者的小說執行資料庫查詢

  2. 瀏覽查詢結果
    使用者瀏覽作者返回的小說列表,並訪問其他細節,如使用者評論和庫存狀態。此操作將導致應用程式執行額外的資料庫查詢。

  3. 新增物品到購物車
    瀏覽完小說的詳細資訊後,使用者決定向購物車中新增一本小說。此操作將導致應用程式呼叫資料庫來更新購物車。

  4. 結帳
    使用者通過退房完成交易,使用之前在書店網站上儲存的前一次購買的地址和付款資訊。此操作將導致應用程式執行各種資料庫操作以檢索使用者資訊、新增新訂單、更新庫存和生成電子郵件確認。

對於前面的每個操作,使用者都向資料庫發出請求,如圖2-2中的向下箭頭所示。資料庫處理請求所花費的CPU時間和等待資料庫所花費的等待時間被認為是資料庫時間,用陰影區域表示。請求完成後,結果返回給使用者,如向上箭頭所示。上下箭頭之間的間距表示處理請求的總使用者響應時間,其中包含DB時間之外的其他元件,如圖2-1所示。

Note:

資料庫時間是從例項啟動時開始累積度量的。因為DB時間組合了來自所有非空閒使用者會話的時間,所以DB時間可能超過例項啟動以來經過的時間。例如,一個運行了5分鐘的例項可以有4個活動會話,其累計DB時間為20分鐘。

資料庫調優的目標是減少資料庫時間。通過這種方式,您可以改進應用程式中使用者事務的總體響應時間。

2.1.2 Wait Event Statistics

等待事件由會話遞增,以指示會話必須等待事件完成後才能繼續處理。當會話在處理使用者請求時必須等待時,資料庫通過使用一組預定義的等待事件之一來記錄等待。然後將事件分組到等待類中,如使用者I/O和Network。等待事件資料揭示了可能影響效能的問題的症狀,例如鎖存、緩衝區或I/O爭用。

See Also:

2.1.3 Session and System Statistics

可以在系統和會話級別上獲得大量累積資料庫統計資訊。其中一些統計資料是由AWR收集的。

2.1.4 Active Session History Statistics

活動會話歷史(ASH)統計資料是資料庫中會話活動的示例。資料庫每秒對活動會話進行取樣,並將其儲存在系統全域性區域(SGA)的迴圈緩衝區中。任何連線到資料庫並使用CPU的會話,或正在等待不屬於空閒等待類的事件的會話,都被視為活動會話。通過只捕獲活動會話,可以表示一組可管理的資料。資料的大小直接與正在執行的工作有關,而不是與資料庫上允許的會話數量有關。

使用“時間模型統計”中描述的DB時間示例,從書商網站上進行的線上交易中收集會話活動樣本,用圖2-3中水平箭頭下方的垂直線表示。

Figure 2-3 Active Session History

Description of Figure 2-3 follows
Description of "Figure 2-3 Active Session History"

The light vertical lines represent samples of inactive session activity that are not captured in the ASH statistics. The bold vertical lines represent samples of active sessions that are captured at:

  • 7:38, while novels by the author are being queried

  • 7:42, while the user is browsing the query results

  • 7:50, when one novel is added to the shopping cart

  • 7:52, during the checkout process

Table 2-1 列出為活動會話收集的ASH統計資訊,以及取樣的會話ID (SID)、模組、SQL ID、會話狀態和等待事件的示例。

Table 2-1 Active Session History

Time SID Module SQL ID State Event

7:38

213

Book by author

qa324jffritcf

Waiting

db file sequential read

7:42

213

Get review ID

aferv5desfzs5

CPU

n/a

7:50

213

Add item to cart

hk32pekfcbdfr

Waiting

buffer busy wait

7:52

213

Checkout

abngldf95f4de

Waiting

log file sync

2.1.5 High-Load SQL Statistics

消耗最多資源的SQL語句根據消耗時間和CPU時間等標準在系統上產生最高的負載。