天天看點

《Oracle資料庫性能優化方法論和最佳實踐》——1.2 性能優化目标的确定和衡量

本節書摘來自華章計算機《oracle資料庫性能優化方法論和最佳實踐》一書中的第1章,第1.2節,作者:柳遵梁 潘敏君 應以峰著,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視

性能優化,顧名思義就是一個改善的過程,通過這個過程實作從目前a到b的目标,其中a和b必須可以被描述和衡量。其中,a為目前狀态的描述和測量。b為需要達到目标狀态的描述和測量。

很遺憾的是,在現實的oracle性能優化實踐中,很多情況下a和b不可描述或未被準确描述,隻知道我要變快,而且是盡可能的快,最終使性能優化變成一鍋亂炖。

大家都知道,性能優化的正常目标是使響應速度變快,但快和慢是相對而言的,如果兩者沒有一緻的描述基準,那麼就會産生問題。比如,如果覺得現在的系統速度慢,那就必須先弄清楚是如何衡量速度慢的,為什麼這種狀況就認為它速度慢了呢?以一個電信受理業務為例,客戶回報受理很慢,需要進行優化,要變快。客戶隻會告訴你受理慢,不會告訴你更多,其他的東西需要性能優化工作者去挖掘,比如和客戶進行溝通,也許你會郁悶地發現,和你溝通的客戶根本就無法說明白為什麼慢,以及慢在哪裡。

1.2.1 性能優化的範疇或優化對象确定

性能優化既然是改善工作,那我們首先必須知道現在在哪裡,将來應該到哪裡去,在改善之前這些因素必須要被确定下來。依然以電信受理業務為例,首先需要确定慢的範疇,範疇又可以分為兩個層次:業務範圍層和影響區域範圍層。

業務範圍層要确定的因素如下:

僅僅是開戶受理慢,還是所有受理業務都慢?

僅僅是儲存慢,還是所有步驟都慢?

僅僅是人工受理慢,還是所有受理都慢?

影響區域範圍層要确定的因素如下:

是個别終端或個别區域慢,還是全局都慢?

是個别受理通道慢,還是所有的受理通道都慢?

通過這些因素最終确定業務性能優化的目标範疇,如表1-1所示。

《Oracle資料庫性能優化方法論和最佳實踐》——1.2 性能優化目标的确定和衡量

1.2.2 性能優化目标的使用者期望管理

作為一個性能優化者,必須知道“慢”是一個相對的概念,快或慢取決于期望值。筆者經常與同僚介紹,作為一個開發人員或dba,必須懂得使用者的期望管理,并且應該清楚如何通過降低客戶的期望來提高客戶的滿意度。依然以電信受理業務為例,假設其實際完成時間大約是2秒,我們請兩個不同的人來描述這2秒裡他們是如何管理期望值的。

第一個人對營業員說:電信受理業務非常複雜,中間要經過n個流程,每個流程都要花費一定的時間,我付出很大努力達到了業務邏輯優化,縮減了很大一部分不需要的流程,現在的性能預期良好,大約2秒鐘左右可以完成受理。此時營業員腦海中就會出現一個畫面,一個按鈕下去,業務系統在跑n個流程,想想頭都暈了。而這麼多步驟2秒鐘就完成了,開發商做得真到位。

輪到第二個人了,他對于自己的産品如此有信心,于是他信心滿滿地告訴營業員,不要擔心性能問題,經過我們的優化,效果非常理想,速度很快。于是營業員滿心期望着眼睛一眨結果就出來,可是等呀等,2秒鐘才做完一筆受理業務。于是紛紛抱怨速度太慢,不可操作,需要進行優化。

除了快慢的期望相對性以外,不同人員的操作頻率也會對快慢的期望産生重大影響,對于操作較少的業務往往可以忍受比較慢的速度,而對于頻繁操作的業務則很難忍受較慢的

速度。

1.2.3 性能優化的目标衡量

對于使用者來說,優化目标很容易确定,回到原來的響應速度甚至比原來的響應速度更快即可。但對于性能優化者來說,這個描述是無法定性或定量衡量優化目标的。是以需要與客戶溝通,進一步把這個目标分解細化,并且是要可測量的。

對于非互動式的批處理應用,優化目标相對容易确定,一般可以用每分鐘處理業務量或每個業務單元所耗費的時間來進行衡量。比如電信實時計費系統,可以用每分鐘處理多少條話單來衡量優化目标名額。大部分非互動式批處理系統都具有處理業務日志系統,是以可準确衡量每分鐘處理業務量;對于少量不具備日志的批處理系統,則可以采用類似作業的處理響應時間來衡量;若有無法采用以上方式衡量的情況,也可以簡單通過結果比較甚至業務特征比較來完成,比如簡單統計話單數量或者簡單統計insert into cdr_detail values ( )語句的執行次數,或者通過統計這些批處理會話的事務數量來完成。

對于局部終端的互動式應用,由于性能影響閱聽人有限,直接的定性描述或實際衡量的響應是一種可以接受的簡單優化目标衡量方式。

對于廣泛閱聽人影響的互動式應用,其性能表現往往與吞吐量的大小有關。可以采用定性和定量結合的方式來完成優化目标衡量,如下:

吞吐量的确定。使用者一般難以了解吞吐量的概念,是以可以簡單采用技術性名額來描述,比如采用事務數量或特征語句的執行次數來确定吞吐量。

響應時間。響應時間又可以從定性和定量兩個方面來确定,包括與部分終端使用人員交流,獲得感性的響應時間來進行定性的認知以及通過特征語句的每次執行時間來進行定量的描述。除了以最終業務響應性能評價作為優化目标之外,很多優化場景僅僅是降低資源的使用,比如降低cpu消耗和i/o消耗等,這種性能優化是純技術性操作,簡單采用技術名額确定即可。

表1-2~表1-5可以用來幫助大家針對不同的業務應用類型來衡量優化目标。

《Oracle資料庫性能優化方法論和最佳實踐》——1.2 性能優化目标的确定和衡量
《Oracle資料庫性能優化方法論和最佳實踐》——1.2 性能優化目标的确定和衡量