前言
我們見到過很多帶有巨大性能問題的Oracle應(yīng)用程序和電子商務(wù)套件安裝。我們得出的結(jié)論是:這些安裝都可以在性能方面取得進一步的提升。換句話說,性能已經(jīng)很高,幾乎不能得到再得到改善的安裝是很少見的。
有爭議的問題
針對產(chǎn)品系統(tǒng)堆棧而言,我們的底部端對端性能調(diào)優(yōu)方法總是很快產(chǎn)生成果,比我們認(rèn)為的遵循廣泛的備忘列表要快。我提出以下一些問題共討論:
大部分性能改善的可能性都是在應(yīng)用程序級上:這條結(jié)論來自Metalink上關(guān)于性能調(diào)優(yōu)的一個顯著的注釋。這條結(jié)論和我們的經(jīng)驗性能調(diào)優(yōu)系統(tǒng)堆棧沒有統(tǒng)計意義上的關(guān)系。
平均需要兩天的時間:這是書上做出的結(jié)論。但我們的經(jīng)驗不支持這個結(jié)論。我認(rèn)為得出一個Oracle應(yīng)用程序性能改善的策略最少應(yīng)該需要12天。第一天早晨開會是很常見的事。最后兩天主要用來完成行政方面和技術(shù)級上的有關(guān)發(fā)現(xiàn)、勝利和緊接著的推薦的文檔工作。可以夸張地說,如果一個性能改善不被記錄下來形成文檔,那么以后很難再重復(fù)類似的性能改善。如果對出現(xiàn)的問題不記錄下來形成文檔,那么很可能它會再次發(fā)生。如果一個問題及其解決方法不被記錄下來形成文檔的話,對它的監(jiān)測將非常困難。
擴展碎片:對于聯(lián)機事務(wù)處理系統(tǒng),這應(yīng)該不是一個問題。我們聽過很多有關(guān)“聯(lián)機事務(wù)處理系統(tǒng)”對碎片嚴(yán)重的表(這些表完全是鍵值惟一的)進行事務(wù)處理不會影響性能的說法。但是,我們應(yīng)該經(jīng)常性地重組以消除碎片,這會帶來性能上的巨大改善。Oracle存儲管理改善正在向?qū)⑺槠瑤淼挠绊懽钚』筇げ降剡~進。
由于緩沖輸入輸出不是大問題,所以需要對磁盤輸入輸出進行性能調(diào)優(yōu):這里有兩點需要說明。磁盤輸入輸出的實際開銷并不是內(nèi)存緩沖輸入輸出的一萬倍。真實的比值接近70。即使你的CPU似乎正在抵銷這個代價,并且不帶來任何顯著的性能問題,但是這個問題顯然會限制你的系統(tǒng)的可伸縮性。隨著時間的流逝,我們越來越重視過高的內(nèi)存緩沖輸入輸出,同時找尋性能改善的機會。
OATablespace模型和遷移工具集:已發(fā)布的Metalink注釋(10/03)聲稱“這個新模型帶來了實時性能改善。”這個模型的概念是將100多個Oracle應(yīng)用程序表空間合并成一個以10計數(shù)的表空間。這會帶來潛在的存儲空間節(jié)省么?或許。這會帶來更高的操作效率么?它依賴于其他東西。我們還沒有講解這個工具集。但是我們已經(jīng)理解了在白板級上的表空間合并是如何改善性能的。
對你的個人電腦客戶端進行磁盤碎片整理:在這本書中有關(guān)這個問題的討論很多。這或許是正確的,因為在寫作本書時正流行“胖客戶端”。但是現(xiàn)在,Oracle應(yīng)用程序客戶端是一個“瘦客戶端”(從Oracle廢除Jinitiator開始,我們稱瀏覽器為瘦客戶端),不要期待能從對你的個人電腦客戶端硬盤驅(qū)動器進行磁盤碎片整理中得到性能提升。
載入模塊補丁:這是Oracle技術(shù)支持對于性能問題經(jīng)常給出的對策,其實在很多情況下,它并不合適。原因是打補丁經(jīng)常會帶來不穩(wěn)定性。如果對于補丁的依賴性沒有給予充分考慮,你可能會發(fā)現(xiàn)你不得不載入整個補丁包,而你根本就沒打算載入它們,結(jié)果就是對你系統(tǒng)的堆棧穩(wěn)定性產(chǎn)生了影響。
項目管理
項目管理是很關(guān)鍵的。Oracle應(yīng)用程序性能實施即是技術(shù)上的也是行政上的。某個人必須出來做掌舵者,即項目管理者。必須按功能區(qū)分出不同的優(yōu)先次序。如果有可能,可以按照以下方式:商業(yè)單位先計算他們選拔人才的時間延遲帶來的財政開支,然后乘上用戶的數(shù)量及其每分鐘的收入。獲得應(yīng)用程序性能改善的開銷之一就是要記錄文檔。同時,也需要記錄大量的紙質(zhì)文檔。用戶的欲望必須被管理起來,因為并不是所有的區(qū)域都會產(chǎn)生同樣戲劇性的結(jié)果。必須有一個管理者來劃分不同的優(yōu)先次序,有些時候甚至需要對性能團隊的訪問進行過濾。一方面,用戶會頻繁地提出會導(dǎo)致底層性能問題的主意和要求。另一方面,和用戶進行交互可能會妨礙你的工作進度。成功也會導(dǎo)致暴露下一層性能問題的出現(xiàn)。
什么是用戶不能告訴你的
針對某個用戶的從底向上的方法揭示了一個單獨的包消耗的輸入輸出資源占全部的25%左右。對另一個用戶而言,一個單獨的查詢可能會引起每周4.3TB的緩沖輸入輸出。性能調(diào)優(yōu)使得緩沖開銷降至原先的0.06%。問題是它會耗盡CPU資源,同時,在那種情況下,是否對CPU進行擴充還需慎重考慮。沒有人知道系統(tǒng)堆棧正在抵銷這個代價。
關(guān)于性能調(diào)優(yōu)保守最嚴(yán)密的一個秘密在Oracle性能調(diào)優(yōu)指南中被發(fā)現(xiàn)的。作為一個團隊,我們發(fā)現(xiàn)這個秘密已經(jīng)多年了。對于beta級或產(chǎn)品系統(tǒng)的性能問題,你應(yīng)該從系統(tǒng)的最底層堆棧開始診斷。不幸的是,性能診斷經(jīng)常僅僅集中在系統(tǒng)堆棧中間的四個部分。它們是:
* 邏輯數(shù)據(jù)庫結(jié)構(gòu)
* 數(shù)據(jù)庫操作
* 訪問路徑(SQL)
* 內(nèi)存分配
但是,我們經(jīng)常可以在Oracle底層的幾個級別上發(fā)現(xiàn)很大的性能問題,如下所示:
* 輸入輸出和物理數(shù)據(jù)庫結(jié)構(gòu)
* 資源競爭
* 底層操作系統(tǒng)平臺
新聞熱點
疑難解答
圖片精選