思維之道 --讀《質量.軟體.管理 系統思維》(3)

husthxd發表於2009-08-26

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 -- 為何難以駕馭兼論Oracle最佳化器的演化。--


為何總是難以駕馭?因為隨著計算過程中影響的因素不斷增加,計算工作地複雜度也會相應增加,而且其增長速度是非線性的。比如我們玩中國象棋,一開始的時候影響棋盤因素有限,可能的結果不多,可預測性也就越高,控制或駕馭局面就相對較為容易,但隨著棋局的不斷深入,影響棋盤的因素越來越多,局面越來越複雜,可能會發生的結果也就越來越多並逐漸超出人的智力所能控制的範圍,駕馭自然就更為困難了。

對於中國象棋而言,雖然複雜,但所有可能的結果是可以根據目前對陣雙方的資訊窮舉,知道所有的結果,局面相對來說還是易於駕馭的,而對於專案管理來說,首先目前的情況是否完整還不能確定,其次可能發生的結果更難預測了,專案難以駕馭的一個原因正在於此。個人認為PM透過了解目前專案的資訊,預測可能發生的結果,從而做出決策是專案管理中富有技術含量的工作,因為在這過程中包含了如何儘可能的瞭解資訊、如何識別和分析資訊、如何預測結果以及如何應對可能發生的情況等等一系列的工作,是對PM專案管理素質的綜合考量。

既然專案可能出現的情況難以窮舉,對於目前掌握的情況,我們如何應對呢?解決方案是應用一般規則解決,比如,進度滯後了,這時候通常的做法就是把任務儘可能的拆分成互不相關的子任務追加資源並行工作,這只是一般規則而已,至於如何決策,那就是見仁見智了,不同的PM可能會做出完全相反的決策。這種方法可以認為是一種定性分析方法,決策更多的是靠PM拍腦袋或者很多人一起拍腦袋做出來的。對於更為複雜的情況,我們就需要用科學的方法對當前情況進行定量分析以對決策提供資料支援,比如掙值法就是一種很有效的定量分析方法。

對於定性分析向定量分析的轉變,我們不妨以Oracle最佳化器的演化作為例子加以說明。Oracle的最佳化器一開始是RBORBO是指基於規則的最佳化器模式,意思是設定一系列的規則,不管是什麼SQL,都按這個規則產生執行計劃,這種方法其實就是定性分析方法,試圖利用專家的經驗對SQL的最優執行計劃做出預測。一開始,使用這種規則還能夠解決80%的問題,但到後來隨著Oracle版本的不斷升級,SQL越來越複雜,SQL的特性越來越多,可能產生的執行計劃如果還是應用規則就只能解決50%左右的問題了,這時候基於成本的最佳化器模式CBO應運而生。CBO的原理很簡單,就是利用資料庫和SQL的相關資訊,包括資料庫引數、表統計資訊、索引統計資訊等等窮舉SQL的執行計劃並計算每個計劃的成本,透過定量比較後選擇一個最優的執行計劃。這裡也就解釋了儘可能保持統計資訊“新鮮”有多重要:沒有統計資訊,CBO什麼都不是。當然,出於成本的考慮,Oracle也不會真的窮舉所有的執行計劃,在適當的時候--Oracle認為已經找到最優的執行計劃--會停止窮舉,這是對窮舉的成本和儘可能獲取最優的執行計劃之間做了一次權衡,也就是說CBO得出來的執行計劃不一定是最優的。之後在9i10gCBO所依賴的基礎資訊中加入了主機資訊等諸如此類的措施無一不是為了儘可能的蒐集資訊從而儘可能快的獲取最優執行計劃而作出的改進。從Oracle最佳化器的演化過程說明了使用科學量化的資料比拍腦袋所得出的結果要好很多。

專案管理相對於SQL的執行計劃因為資訊不完全,亦無法窮舉將來的結果,情況會更為複雜,這時候如何作出正確的決策?這正是PM的核心價值所在了。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/6906/viewspace-613329/,如需轉載,請註明出處,否則將追究法律責任。

相關文章