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...