Oracle自動性能統計

Oracle自動性能統計

??高效診斷性能問題,需要提供完整可用的統計信息,好比醫生給病人看病的望聞問切,才能夠正確的確診,然后再開出相應的藥方。Oracle數據庫為系統、會話以及單獨的sql語句生成多種類型的累積統計信息。本文主要描述oracle性能統計涉及到的相關概念及統計對象,以更好的利用統計信息為性能調整奠定基礎。

一、性能統計信息的幾個術語

  • 增量值(delta)

??性能統計信息依賴于delta值的累計,即增量值。增量值反映了在某個特定時段某個特定事件的趨勢,或者說波動的幅度。通過對比在開始期間統計的累計值和結尾處的累計值之間的差異,才能夠更清晰的了解該項值在系統不同負載時間段所需要的資源開銷以及用于定位性能瓶頸。

??在Oracle數據庫中,可以通過查詢V$SESSTAT和V$SYSSTAT來查詢統計值的累計情況。由于這2個視圖為動態性能視圖,因此,這2個視圖的數據收集的僅僅是自實例啟動以來的統計數據。如此這般,那數據庫關閉后所有的統計信息丟失腫么辦,不用著急,有AWR來定期進行保存。

  • 度量(metric)

??度量是Oracle數據庫收集的另一種統計類型。一個度量被定義為在一些累積統計信息的變化率。該速率可以對各種單元進行測量,包括時間、事務或數據庫調用。例如,每秒的數據庫調用是一個度量。度量值可以從動態性能視圖查詢獲得。其中的值是在一個相當小的時間間隔的平均值,通常為60秒。最近的度量值的歷史是在V$視圖,同時一些數據也由AWR快照進行持久化保持。

  • 采樣(sampling)

??Oracle對活動會話過程中出現的相關等待進行采樣,并將這些數據收集到內存中,可以用V$視圖進行訪問,也可以將其生成報告,用于快速或者實時的定位性能問題。那這個部分就是所謂的ASH,活動會話歷史。同時這些數據由AWR快照處理也將其寫入持久存儲。

  • 基線(baseline)

??有數據,能比對,才能夠真正反映問題的實質。那么在Oracle數據庫里邊,我們可以將其業務負載高峰期的活動會話歷史數據,更確切的說是AWR持久化的數據貼個標簽,這個標簽就是所謂的基線。因此基線就是某個特定時段業務高峰期數據庫整體性能的一個基準報告,一旦當后續數據庫出現性能問題或運行不佳的時候,通過使用基線,與性能問題期間的性能統計數據進行比對,得出兩者的差異報告,有助于問題的定位于解決。

二、系統級別性能統計

??操作系統基本性能統計提供了系統主要硬件部件的使用和性能的信息,以及操作系統本身的性能。這些信息對于檢測潛在的資源消耗,如CPU周期和物理內存,以及檢測外設性能不良,如磁盤驅動器是至關重要的。 操作系統統計是硬件和操作系統工作狀況的重要的指標。主要包括以下重要信息。

  • CPU統計信息

??CPU利用率是調優過程中最重要的操作系統統計。應獲取整個系統和多處理器系統中單個CPU的利用率。每個CPU的利用率可以檢測單線程和可擴展性問題。大多數操作系統在用戶空間或內核空間顯示CPU時間開銷,這些額外的統計數據可以更好地分析CPU實際執行情況。

??在僅僅單個應用程序運行的Oracle數據庫系統中,通常情況下,該業務系統在用戶空間中運行數據庫活動。服務于數據庫的活動請求(如調度、同步、I/O、內存管理、進程/線程創建和刪除)則在內核模式(空間)下運行。在一個CPU充分利用的系統中,一個健康的Oracle數據庫在用戶空間CPU的開銷通常在運行65%到95%之間。

??可以通過查詢V$osstat視圖捕獲硬件和操作系統級別的相關信息,使得判定硬件級資源存在的問題更容易。V$sysmetric_history視圖保留主機一小時內CPU使用度量,以每一分鐘時間間隔來表示的CPU使用率。V$?sys_time_model視圖提供了有多少CPU被Oracle數據庫使用。這兩組統計數據更能夠確定Oracle數據庫或其他系統活動是否是CPU問題的原因。

  • 虛擬內存統計信息

??虛擬內存統計主要用于判斷系統上是否存在大量分頁或交換活動。當大量分頁和交換時,系統性能會迅速下降。單個進程的內存統計數據可以檢測內存泄漏是否是由于某個進程釋放內存失敗而導致。

  • 磁盤I/O統計信息

??I/O子系統的性能決定或影響著數據庫的性能。大多數操作系統對磁盤提供一些擴展的統計信息。最重要的磁盤統計信息是當前的響應時間和磁盤隊列的長度。這些統計數據顯示磁盤是否處于最佳狀態,或者磁盤是否正在超負荷工作。

??測量I/O系統的正常性能;取決于所使用的硬件,單個塊讀取范圍的典型值從5到20毫秒。如果硬件顯示的響應時間遠高于正常的性能值,那么它表現不佳或超負荷工作。這就是瓶頸。如果磁盤隊列開始超過兩個,那么磁盤是一個潛在的瓶頸系統。

??Oracle數據庫提供了一些在I/O調用時的I/O統計信息。這些統計數據在以下視圖獲取。

??v$iostat_consumer_group :

????在啟用資源計劃后,該視圖捕獲I/O相關信息,是所有資源消費群組統計。數據庫樣本統計每小時累積并將它們存儲在AWR中。

??v$iostat_file :

????該視圖是基于磁盤文件I/O的統計,主要用于以文件級別展現文件訪問頻度。

??v$iostat_function:

????該視圖是基于I/O數據庫功能(如LGWR和DBWR)的統計數據。

  • 網絡統計信息

??用于確定網絡或網絡接口是否過載或沒有最佳執行。在今天的網絡應用中,網絡延遲可以是實際用戶響應時間的很大一部分。出于這個原因,這些統計是一個關鍵的調試工具。

??v$IOSTAT_NETWORK:

????該視圖提供網絡相關統計信息查詢

三、數據庫統計信息

??數據庫統計提供數據庫上的負載類型以及數據庫使用的內部和外部資源的信息。

  • 等待事件

??等待事件是由服務器進程或線程遞增的統計數據,也就是說在繼續處理當前某項任務之前,它必須等待某個事件完成才能繼續處理。等待事件數據揭示了可能影響性能的問題的各種癥狀,如鎖存爭用、緩沖區爭用和I/O爭用。

??為了更好的分析不同等待事件,Oracle將等待事件進行了分類。等待事件分類包括:管理,應用程序,集群,提交,并發,配置,空閑,網絡,其他,調度,系統I/O,和用戶I/O。

?? Author : Leshami

?? Blog :?http://blog.csdn.net/leshami

??下面的列表包括一些類中的等待的常見示例:

?? ??1. 應用程序:由行級鎖定或顯式鎖命令所引起的鎖等待

?? ??2. 提交:提交后等待重做日志寫入確認

?? ??3. 空閑:表示會話不活動的等待事件,例如來自客戶端的sql*net消息

?? ??4. 網絡:等待數據通過網絡發送

?? ??5. 用戶I/O:等待塊被讀取磁盤

  • 時間模型統計

?? 基于時間模型統計,主要是基于操作類型測量在數據庫中花費的時間的統計信息。最重要的時間模型統計是數據庫時間,即DB Time。數據庫時間表示在數據庫調用中所花費的總時間,是實例工作負載量的總指示器。

?? 在Oracle數控中,每個組件都有自己的統計數據。因此通過該組件與整體DB Time進行比對,可以很好地衡量這個組件的性能,或者說這個組件占據整個DB Time的百分比。如果能夠基于這些開銷過大的組件來進行調整,也即是整個DB Time開銷的時間更少。

DB Time:

??即所有花費在數據庫層面調用時間的總和,包括所有會話(前臺進程)以及非空閑等待,CPU時間等

?? DB Time 是從實例啟動以來時間的累計測量。由于DB時間是由所有非空閑用戶會話的時間組合來計算的,所以DB時間可能超過實例開始后所經過的實際時間。例如,已經運行了30分鐘的實例可能有四個活動用戶會話,其累積DB Time大約為120分鐘。

更多關于時間統計模型可以參考:Oracle Time Model Statistics(時間模型統計)

  • 活動會話歷史(ASH)

??Oracle對當前數據庫活動會話,每秒進行采樣,并將其最近10次的等待信息保存到v$session_wait,同時將其歸檔到活動會話歷史表v$session_wait_history。這即是活動會話歷史(ASH)。這些數據被保留在從SGA分配的特定內存中,并且采用循環寫的方式,即采取LRU算法定期清理該部分緩存。說簡單一點,ASH采用的策略是:保存處于等待狀態的活動session的信息,每秒從v$session_wait中采樣一次,并將采樣信息保存在內存中。由于SGA中的活動會話信息存儲在循環緩沖區中,系統活動越大,可以在循環緩沖區中存儲的會話活動的秒數越小。因此這些數據就需要定期將其寫入到磁盤,那就是由MMON進程定期將部分數據寫入到AWR。AWR采用的策略是:每小時對v$active_session_history進行采樣一次,并將信息保存到磁盤中,并且保留8天(11g缺省值),8天后舊的記錄才會被覆蓋。這些采樣信息被保存在視圖wrh$_active_session_history中。而這個采樣頻率(1小時)和保留時間(8天)可以根據實際情況進行調整。

??活動會話歷史通常包括以下數據:

????SQL語句及SQLID

????用于執行sql語句的sql計劃的sql計劃標識符和哈希值

????SQL執行計劃信息

????對象編號、文件號和塊號

????等待事件標識符和參數

????會話標識符和會話序列號

????模塊和動作名稱

????會話的客戶端標識符

????服務散列標識符

????消費組標識符

  • 系統和會話統計信息

??可以從V$SYSSTAT和V$SESSTAT兩個視圖獲取大量系統級別以及會話級別的統計信息。

轉載于:https://www.cnblogs.com/timlong/p/7475470.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/391461.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/391461.shtml
英文地址,請注明出處:http://en.pswp.cn/news/391461.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

numpy2

1、通用函數,是一種在ndarray數據中進行逐元素操作的函數。某些函數接受一個或多個標量數值,并產生一個或多個標量結果,通用函數就是對這些函數的封裝。 1、常用的一元通用函數有:abs\fabs  sqrt   square  exp  log\log2…

Apache Prefork、Worker和Event三種MPM簡單分析

(1) Prefork MPM (優點) :使用多個子進程,每個子進程只有一個線程來處理一個 http 連接,不用擔心線程安全問題缺點:內存消耗大,不擅長處理高并發環境,使用keep-alive長連接時要等到超…

grasshopper_如何使用Google的Grasshopper編碼應用程序來學習手機上的編碼基礎知識...

grasshopper什么是蚱hopper? (What is Grasshopper?) Grasshopper is an interactive education app for learning about coding. It began at Google as an experimental project created by a group called Area 120. Grasshopper是一個用于學習編碼的交互式教育…

機器學習 量子_量子機器學習:神經網絡學習

機器學習 量子My last articles tackled Bayes nets on quantum computers (read it here!), and k-means clustering, our first steps into the weird and wonderful world of quantum machine learning.我的最后一篇文章討論了量子計算機上的貝葉斯網絡( 在這里閱讀&#xf…

leetcode 179. 最大數(排序)

給定一組非負整數 nums,重新排列每個數的順序(每個數不可拆分)使之組成一個最大的整數。 注意:輸出結果可能非常大,所以你需要返回一個字符串而不是整數。 示例 1: 輸入:nums [10,2] 輸出&a…

test3

test3 轉載于:https://www.cnblogs.com/Forever77/p/11441068.html

linux滲透測試_滲透測試:選擇正確的(Linux)工具棧來修復損壞的IT安全性

linux滲透測試Got IT infrastructure? Do you know how secure it is? The answer will probably hurt, but this is the kind of bad news you’re better off getting sooner rather than later.有IT基礎架構嗎? 你知道它有多安全嗎? 答案可能會很痛…

BZOJ 1176: [Balkan2007]Mokia

一道CDQ分治的模板題,然而我De了一上午Bug...... 按時間分成左右兩半,按x坐標排序然后把y坐標丟到樹狀數組里,掃一遍遇到左邊的就add,遇到右邊的query 幾個弱智出了bug的點, 一是先分了左右兩半再排序,保證的是這次的左…

深入理解InnoDB(1)—行的存儲結構

1.InnoDB頁的簡介 頁(Page)是 Innodb 存儲引擎用于管理數據的最小磁盤單位。常見的頁類型有數據頁、Undo 頁、系統頁、事務數據頁等 2.InnoDB行的存儲格式 我們插入MySQL的記錄在InnoDB中可能以4中行格式存儲,分別是Compact、Redundant、D…

做嵌入式的必須學Android嗎

做嵌入式的必須學Android嗎Android方向適合哪些人呢?適合那些已經在自己領域有了一定的工作經驗的人,適合作為自己的拓展,適合提升自己的能力,譬如說已經做三年Linux驅動,就可以嘗試拓展去做Android驅動首先從技術角度…

test4

test4 轉載于:https://www.cnblogs.com/Forever77/p/11441980.html

boltzmann_推薦系統系列第7部分:用于協同過濾的Boltzmann機器的3個變體

boltzmannRecSys系列 (RecSys Series) Update: This article is part of a series where I explore recommendation systems in academia and industry. Check out the full series: Part 1, Part 2, Part 3, Part 4, Part 5, Part 6, and Part 7.更新: 本文是我探索…

.net 初學者_在此初學者課程中學習使用TensorFlow 2.0開發神經網絡

.net 初學者Learn how to use TensorFlow 2.0 in this full video course from Tech with Tim. This course will show you how to create neural networks with Python and TensorFlow 2.0.在Tech與Tim的完整視頻課程中,學習如何使用TensorFlow 2.0。 本課程將向您…

AndroidStudio怎樣導入library項目開源庫 - 轉

https://jingyan.baidu.com/article/1974b2898917aff4b1f77415.html轉載于:https://www.cnblogs.com/EasyLive2006/p/7477719.html

深入理解InnoDB(2)—頁的存儲結構

1. 記錄頭信息 上一篇博客說到每行記錄都會有記錄頭信息,用來記錄每一行的一些屬性 Compact行記錄的記錄頭信息為例 1.1 delete_mask 這個屬性標記著當前記錄是否被刪除,占用1個二進制位,值為0的時候代表記錄并沒有被刪除,為1的…

PHP中的命名空間

1. PHP中的命名空間是什么? 官方解釋在此: 命名空間概述 命名空間用一句話說,就是:把 類、函數、變量 等放到邏輯子文件夾中去,以避免命名沖突。 注:命名空間跟實際代碼文件在文件系統中的路徑沒有任何關系…

pandas 入門

pandas簡介:pandas包含的數據結構和數據處理工具的設計使得利用進行數據清洗和數據分析非常快捷;與numpy的區別,pandas用來處理表格型或異質型數據的,而numpy更適合處理同質型的數值類數據。 1、Series簡介 1、Series是一種一維的…

傳智播客軟件測試第一期_播客:冒險如何推動一位軟件工程師的職業發展

傳智播客軟件測試第一期On this weeks episode of the freeCodeCamp podcast, Abbey chats with developer and wearer of many hats Princiya about how she changed careers, moved to Berlin, and worked her way up to a lead role.在本周的freeCodeCamp播客節目中&#xf…

爬蟲神經網絡_股市篩選和分析:在投資中使用網絡爬蟲,神經網絡和回歸分析...

爬蟲神經網絡與AI交易 (Trading with AI) Stock markets tend to react very quickly to a variety of factors such as news, earnings reports, etc. While it may be prudent to develop trading strategies based on fundamental data, the rapid changes in the stock mar…

Promise 原理解析與實現(遵循Promise/A+規范)

1.什么是Promise? Promise是JS異步編程中的重要概念,異步抽象處理對象,是目前比較流行Javascript異步編程解決方案之一 2.對于幾種常見異步編程方案 回調函數事件監聽發布/訂閱Promise對象這里就拿回調函數說說 1.對于回調函數 我們用Jquery的ajax獲取數…