<form id="tznrh"><form id="tznrh"><th id="tznrh"></th></form></form>


            Oracle Database Performance Tuning Guide

            Oracle數據庫中我們分析一個會話或SQL執行時間效率或者分析解釋導致會話等待的原因的一個很重要的方法是分析它花費的時間構成。在Oracle RAC中,Oracle使用不同的等待事件時間來表示不同的請求結果及時間消耗。例如,當一個會話上實例正在尋找全局緩存中的塊,它不知道它是否會接收另一個實例緩存的數據塊,或者它是收到消息讓它直接從磁盤讀取。全局緩存的等待事件向我們精確傳達它是等待全局緩存塊還是消息:Oracle將RAC相關的等待事件匯總在一個名為Cluster Wait Class的廣泛類別中。當用戶需要請求訪問一個數據塊時,就會有相應的事件等待處于活動狀態,例如:

            1. gc current block request

            2. gc cr block request

            當知道請求的結果時:

            1. gc current block 3-way

            2. gc current block busy

            3. gc cr block grant 2-way

            Oracle RAC的等待事件非常細致的傳達了Cache Fusion發生的每一個階段消耗的時間,幫助我們很好的定位問題。


            GCS and GES Statistics

            緩存融合傳輸的響應時間由消息傳遞、處理及私網傳輸時間(IPC協議和GCS協議)組成。gc current block busy等待事件表示對緩存數據塊的延遲訪問,因為它們在遠程或本地緩存中正在被訪問。

            這可能是由以下任何原因引起的:

            1. 數據塊被pinned住。

            2. 數據塊被其他會話持有。

            3. 遠程實例上的日志寫入出現延遲。

            4. 同一實例上的會話已請求訪問的塊并且正在實例間進行轉換,當前會話的會產生(gc current block busy)等待。

            使用V$SESSION視圖可以查看具有爭用的對象和數據塊,并且其中的p1和p2列表示塊請求的數據文件和塊號,AWR基礎結構提供了活動會話歷史記錄的視圖,也可以用于跟蹤最近的等待事件及其指標。AWR和Statspack報告工具都包含大多數相關的等待事件,這可以有效的幫助我們分析Cache fusion的問題。建議在AWR基礎架構收集的快照數據上運行ADDM獲得全局緩存影響的總體評估。該advisory也將識別繁忙對象和SQL高gc等待時間。


            GCS Statistics

            本節介紹如何通過識別讀取的對象修改和訪問所產生的服務時間來監視GCS性能。在cache fusion過程中對塊的請求到達是整個響應時間的重要組成部分,同樣從磁盤讀取可能會增加塊訪問延遲。在大多數情況下,緩存融合傳輸比磁盤訪問響應更快。以下等待事件表明當前實例向主節點申請了一個當前或者一致性塊并且這個申請已經被主節點響應,而且沒有出現超時。也就是說遠程緩存的塊已發送到本地實例并且沒有產生busy,pinned或需要logflush:

            1. gc current block 2-way

            2. gc current block 3-way

            3. gc cr block 2-way

            4. gc cr block 3-way

            gc current blocks received和gc cr blocks received可用于快速判斷訪問的對象目前是被多個實例共享的。 前面列表中提到的事件的平均等待時間的任何增加可能是由以下事件引起的:

            1. 系統負載過高:CPU,IO資源不足,運行隊列過長,計劃任務出現延遲等。

            2. 私有網絡問題:網絡延遲過高,帶寬不夠。

            如果平均等待時間可以接受,并且診斷后沒有私網或負載問題,那么等待的累計時間通??梢酝ㄟ^Top SQL進行SQL語句的調整優化以最小化訪問的塊數,使用檢查buffer cache的大小,fast_start_mttr_target(檢查點觸發頻繁)導致刷臟塊頻率過高。V$SQLAREA中的列CLUSTER_WAIT_TIME表示發生的全局緩存事件等待時長,可以通過它來進行確定哪些SQL需要調整。注意:Oracle建議使用ADDM和AWR。Statspack也可以但是需要使用級別7運行Statspack才能收集統計信息與塊爭用和段塊等待有關。


            Response Times Based on Wait Events

            大多數全局緩存等待事件在AWR報告或者動態性能視圖的中顯示時間占比較高并且可能存在它們作為頂級數據庫時間消費者但是并不一定代表有問題。如果用戶響應時間增加并且等待很高比例的時間用于全局高速緩存(gc),這個時候需要我們確定原因。大多數報告都包括細分事件按總時間的百分比排序。從ADDM報告開始是有用的,該報告分析常規收集的報告性能統計與其影響有關,并指向哪些對象和SQL對等待的時間貢獻最大,然后由AWR和Statspack提供更詳細的報告。Oracle RAC最重要的等待事件包括以下類別:

            1. Block-Related Wait Events

            2. Message-Related Wait Events

            3. Contention-Related Wait Events

            4. Load-Related Wait Events


            Block-Related Wait Events

            與塊相關的等待事件統計信息表明已收到的塊經過作為2次或3次消息傳遞的結果,即塊是從任何一個發送的資源master需要1次消息和1次塊傳輸,或者被轉發到第三個節點,需要2條消息和1個塊傳輸。

            1. gc current block 2-way

            2. gc current block 3-way

            3. gc cr block 2-way

            4. gc cr block 3-way


            Message-Related Wait Events

            與消息相關的等待事件統計信息表明沒有收到任何阻塞,因為它在任何實例中都沒有緩存。表示的是一個全局授權,使其能夠實現請求實例從磁盤讀取塊或修改它。如果這些事件消耗的時間很長,那么可以假設SQL導致很多磁盤I/O(在cr授權的情況下)或者說工作負載會插入大量數據,并且需要經常查找和格式化新塊。

            1. gc current grant 2-way

            2. gc cr grant 2-way


            Contention-Related Wait Events

            與爭用相關的等待事件統計信息表明請求的塊被另一個節點上的會話持有,并且所做的更改尚未結束因此不能馬上發送傳遞。一個塊產生busy等待也可能會發生在本地,當一個會話啟動了一個緩存融合操作,同節點上的另一個會話正在嘗試讀取或修改相同的數據。高服務時間可能會加劇在全局高速緩存中傳遞塊的爭用,大部分情況下busy類的等待事件表明用戶對同一數據的頻繁并發讀寫訪問。gc current block busy and gc cr block busy等待事件表明發出請求的本地實例沒有立即收到當前或一致性讀取塊。這些事件名稱中的busy一詞表示發送該塊在遠程實例上被延遲發送了。例如,如果Oracle數據庫尚未為塊的更改寫入redo。與block busy等待事件相比,gc buffer busy等待事件表Oracle數據庫無法立即授予對存儲在本地的緩存的訪問權限。這是因為緩沖區上的全局操作正在等待且操作尚未完成。換句話說,緩沖區正忙,所有其他嘗試訪問本地緩沖區的進程必須等待完成。gc buffer busy也同樣意味著多次訪問本地塊的請求。Oracle數據庫必須排隊這些請求。Oracle數據庫需要處理的時間長度隊列取決于塊的剩余服務時間。服務時間受:網絡延遲時間,遠程和本地實例處理時間,以及等待隊列的時間。平均等待時間和總等待時間都應該被考慮進去,這些特定的等待對系統有巨大的影響。

            1. gc current block busy

            2. gc cr block busy

            3. gc buffer busy acquire/release


            Load-Related Wait Events

            與負載相關的等待事件表明在處理中發生了延遲GCS,這通常是由高負載,CPU飽和,負載平衡,新節點的添加刪除。對于上面提到的事件,等待時間包含整個節點從會話開始等待啟動塊請求之后到請求的塊被返回。

            1. gc current block congested

            2. gc cr block congested




            沃趣科技,讓客戶用上更好的數據庫技術!
            三分快3