oracle時間模型概念

2021-06-22 06:40:57 字數 3342 閱讀 6355

racle

的效能分析在過去的

20年裡已經走了很長的一段路。這裡首先提出

「僅僅新增更多的資源

」的方式,然後涉及比率分析,最後是等待事件分析的出現。但是那些方式都不完整或者足夠廣泛,所以在

2001

年我發表了一篇名為《

oracle

響應時間分析

(rta)

》的**。

rta的文章同時提出並且詳細描述了響應時間中的兩個元素

:服務時間和排隊時間。有關

rta的乙個更加微妙的方面就是理解服務時間和排隊時間之間的關係,以及它們與作業系統之間是如何聯絡的。

使用者感覺到的響應時間是許多個相關系統的結果。

oracle

伺服器只是這些系統中的乙個。花費在每個系統上的時間都可以劃分為服務時間和排隊時間。我們只能把所有的服務時間和所有的排隊時間加起來,來判斷終端使用者的響應時間。但是在現實生活中,有時候這些努力相對於結果來說並不值得

……不是說完成起來極端困難。但是肯定值得我們去做的最小的努力就是從

oracle

的角度獲取服務時間和排隊時間。此外,我們還可以獲得有關它如何與資料庫伺服器的

cpu子系統相聯絡的細節。

讓我們看看基本的基於

oracle

的響應時間公式:

rt = 

終端使用者響應時間

= ts + tw

ts = 

服務時間

= cpu 

時間= oracle 

核心**執行時間

tw = 

排隊時間

= orat + tiert

orat = oracle

等待時間

(包括從伺服器程序到

oracle

客戶端程序的時間,以及

oracle

客戶端程序的時間)

tiert = 

從oracle

客戶端程序到終端使用者的時間。其中包括網路伺服器、網路時間、瀏覽器時間等。

從分析響應時間中我們可以穴道很多東西,其中一件就是服務時間有限,但是等待時間卻無限。每個

cpu子系統都有乙個最大的固定的可以提供的

cpu能力。如果你的機器是乙個

cpu的,這個機器就可以提供每分鐘60個

cpu秒的最大量。如果你的機器中有10個

cpu,它就可以提供每分鐘

600個

cpu秒。這個環境對排隊時間來說絕對是不同的。

排隊時間是不固定的,並且只被工作負載所限制。如果工作負荷相對比較小,排隊時間就可能接近於

0。但是當工作負載不斷增加,排隊時間就會達到無限

——它沒有限制。

有關排隊時間無限的說法提出了兩個我們需要思考的概念。首先,如果

oracle

消耗了所有可用的

cpu,那麼要求更多的

cpu就需要增加服務時間,同時也有可能增加

oracle

等待時間。結果就是響應時間的增加。這是不好的,非常不好。這意味著我們的解決方案需要仔細權衡它們是如何影響

cpu子系統的。

(這個概念在我的新**《

oracle

等待介面詳解》中有詳細的解釋。

)第二個概念就是我們現在有另一種方式來檢視乙個非常動態的系統。這不僅可以幫助我們理解系統,還可以讓我們幫助其他人來理解潛在的非常複雜的基於

oracle

的系統。

例如,考慮 下面的圖。資料是從實際生活中的

oracle

系統上收集到的。每個小時、響應時間元件都會被收集並且總結。排隊時間從

v$system_event

中收集,服務時間是從

v$sysstat

中收集。通過檢視這幅圖,如果效能是糟糕的,所有的非

oracle

伺服器體系元件都表明不是瓶頸,瓶頸就應該是在

oracle

伺服器中了。通過以下的圖,我們可以推斷,

io子系統有很嚴重的瓶頸,或者鎖定

/阻塞問題。也許

2200

左右就是

cpu的瓶頸,但是剩餘的時間肯定是

io瓶頸或者鎖定

/阻塞問題。

讓我們更仔細地看一下。問題都集中在可用的

oracle

消耗的作業系統的

cpu能力百分比。仔細檢視上述的圖形。我們從

cpu子系統開始。因為在乙個小時裡面大概消耗了大約

1000

分鐘的最大

cpu時間,我們知道那肯定至少有17個

cpu。最糟糕的情況就是使用的

cpu資源相當於可用的

cpu資源。這一點可以結合從上述圖形中的數字得到:

可用的cpu = 

使用的cpu

x cpus * 60 分鐘/

小時= 1000分鐘/

小時x cpus = 1000分鐘/

小時/ 60分鐘/

小時x cpus = 16.67

所以,資料庫伺服器上至少有17個

cpu。如果我們從對作業系統的監控中發現,

cpu的利用率在

50%左右,大概是

2200

,我們還可以推斷出大概有34個

cpu(16.67 x 2)

。現在讓我們把資訊放在一起,這樣它們就有用了。請注意在午餐時間附近,

oracle

每小時消耗的

cpu時間達到

1000

分鐘。我們知道伺服器可以每小時提供

1000

個cpu

分鐘,在午餐時間,它提供的時間少於每小時

500個

cpu分鐘,使用者並不滿意這樣的效能。因此,我們可以推斷出排隊時間

(例如,

oracle

等待事件

)並不是

cpu相關的,

而是與i/o

有關的,或者是相關鎖定/阻塞

(例如排隊等待

)。有力的資訊!

我們知道理解和應用

oracle

響應時間元件可以增加我們的效能威力。但是理解了

oracle

服務時間是如何與

cpu的作業系統相關聯的,就是另乙個級別的了。在沒有理解

oracle

從作業系統中消耗的可用的

cpu的百分比的時候,我們就無法了解是否有足夠的

cpu可用。對

cpu百分比的了解可以讓我們的效能診斷更加準確,可以得出更加有力的解決方案。理解了時間的有限和無限,不僅僅可以幫助你,還有你的同事,以及你需要影響的人們。他們越好的理解這個情況,他們就越同意你的行動建議。換句話說,它使得你的效能分析更加有力,構建了信任。這也是所有的資料庫管理員們都用得最多的。

概念模型,邏輯模型,物理模型

概念模型 就是在了解了使用者的需求,使用者的業務領域工作情況以後,經過分析和總結,提煉出來的用以描述使用者業務需求的一些概念的東西。如銷售業務中的 客戶 和 定單 還有就是 商品 業務員 用use case來描述就是 業務員 與 客戶 就購買 商品 之事簽定下 定單 邏輯模型 就是要將概念模型具體化...

概念模型,邏輯模型,物理模型

概念模型就是在了解了使用者的需求,使用者的業務領域工作情況以後,經過分析和總結,提煉出來的用以描述使用者業務需求的一些概念的東西。如銷售業務中的 客戶 和 定單 還有就是 商品 業務員 用use case來描述就是 業務員 與 客戶 就購買 商品 之事簽定下 定單 邏輯模型就是要將概念模型具體化。要...

時間相關概念

1.提前期 lead time,lt 提前期是指某一工作的工作時間週期,即從工作開始到工作結束的時間。提前期主要是針對 需求 提出的。如果採購部門在某日向生產部門提供某種採購物料,則採購部門應該在需要的日期之前就下達採購訂單,否則,不可能及時提供給生產部門,這個提前的時間段就是提前期。提前期是生成m...