公告版位

目前日期文章:200903 (2)

瀏覽方式: 標題列表 簡短摘要

接觸資料庫與程式設計已經有5~7年,在我的工作環境中,已經歷經兩代資料庫主機轉換,從IBM-AIX轉換成HP-UNIX,不變的是資料庫與應用程式,我接觸Oracle也寫程式,在這幾年中我看的了一些問題一直圍繞著我們打轉。更換主機並非一件小事,尤其是企業最重要的資料庫主機,更換的理由,並非主機損壞,一方面是原廠保固維護,另一方面則是效能低落問題,但真正陪伴著資訊部同仁每天心驚膽戰的卻是效能問題,因此經過多重評估與考量,跟老闆報告:「編預算,換主機吧!」

在程式設計工作邁入第三年時,有幸被派訓Oracle原廠三個月課程,並取得OCP-8i與OCP-9i,因此對Oracle算是有基本瞭解,雖然現在已經不經手管理資料庫,但OCP的教育訓練對我在系統規劃、開發與問題排除時,確實有不小的幫助。在我們這個軟體自行開發,資料庫能自行管理的環境中,一路走來,「資料庫效能不好」的聲音週期性的會伴隨在耳邊,因為對資料庫、網路、作業系統與應用程式都能有基本瞭解,且能有充分掌握,每次遇到資料庫效能不彰問題時,幾乎都能找到原因與解決方案。

當遇到「資料庫效能不好」的時候會如何?小則電話不斷,大則上級關切,抱怨連連,我們的資料庫一樣有跟廠商簽約維護,當遇到這主資料庫效能問題時,除非你有錢,買更高階更大更快的設備,否則對Oracle的效能調校來講,嚴重的問題從發現到解決可能不是三天兩頭能解決,有時候還必須有更多的準備才能找到一個方向,更慘的是,這方向去執行後不見得是解決問題的答案,而是驗證你必須再找其他方向。

硬體維修人員對於PC中毒、當機、速度慢等等疑難雜症有一個終極手段:「重灌」,對於資料庫而言,有良心與經驗的廠商會協助你找方向,某些廠商可能會告訴你「主機該換了」。我對Oracle可是又愛又恨,愛的是他的效能與管理的彈性,恨的也是他的效能與彈性。Oracle處理大量資料,效能確實滿優秀的,功能又多,彈性又大,對於備份、備援、高可用度都有許多種架構任由使用者建構,管理人員對於資料庫的掌控度也很高,管理人員能介入調整的部分,相較SQL-SERVER多出許多,因為有強大並複雜的功能,因此,一名專業的DBA就相形重要,持有OCP證照的DBA只能說是知道如何管理與使用Oracle Database,「經驗」才是一名專業DBA最難能可貴的地方。

在多次處理資料庫效能瓶頸的經驗中,有幾點是重要的方向:主機、Storage、作業系統、網路、資料庫、應用程式,有些是因,有些是果,當整體系統效能不彰時,系統工程師可能會去監看主機磁碟、網路、記憶體的使用,可能會得到一個方向是指向資料庫,接著DBA去監看資料庫,從記憶體、效能、連線等資訊的蒐集分析,又可能指向主機記憶體或不足導致SWAP,這樣的結論,看起來是買個記憶體來插上去就行了吧!當然不是,這些都可能是某些原因產生的結果。

lcjan 發表在 痞客邦 PIXNET 留言(5) 人氣()

品需要防呆設計,硬體需要防呆設計,軟體更是需要。在我們的環境中,遇到了單位反應系統錯誤,最常見到的回答有兩種, 一種是使用者操作問題,一種是程式Bug。程式有bug是資訊單位的絕對責任,但不見得只是資訊單位某人得負責任,從最直接的程式負責人到系統規劃系統分析甚至於主管,都有責任,專業不足、經驗不足、需求了解不透徹或粗心大意都會再系統建構的過程中不知覺的埋下定時炸彈,程式的bug對使用者而言,會與資訊單位的「品質」畫上等號,台碩汽車與賓士汽車同樣是車,價格卻有天壤之別,有錢人寧願花大錢買賓士,除了虛榮心外,確實能感受到品質的不同;主管對程式品質也要負責任,建立制度做品管、經驗傳承、教育訓練、建立文化這些都是主管應做的。對品質負責任,並非是要大家消極的去追究bug製造者或清算他(們),更重要的是去找出bug給予修正,從別人的錯誤中學習,提昇自己,訓練自己,如果能做到下次不再犯就是對自己負責也是對組織負責,對歷史抱怨,改變不了任何事情,唯一改變的是別人對你的觀感。
 
「使用者操作問題」,這也是常聽到的錯誤原因。或許我們不會因為特殊使用者的操作特例(極少發生,影響極小)把程式拿起來大刀闊斧修改一番,但如果同一支程式或系統常常聽到「使用者操作問題」所以資料錯了,系統掛了,這樣的問題可能就要好好思考,是不是該找個時間檢視一下程式了。這些常發生「使用者操作問題」錯誤的系統,可能會有一些共同特徵,例如功能清單分類紊亂、操作介面繁瑣、用字遣詞語意不清、程式流程不順暢、過多人工判斷等等,這樣的設計表面上沒有bug,但卻缺乏人性化思考,我們會期望使用者依照我開發出來的介面依序輸入,按照我程式的流程依序操作,如果不這樣做而出現了存檔失敗或交易中斷的錯誤訊息,就會告訴User這是「使用者操作問題」,誰叫你們不照規定輸入,我來操作都不會出錯。
 
無法將程式優化成人性化介面,那只好加入防呆,顏色提示、游標指引、粗體字、精靈對話框、資料格式檢核、提示訊息....這些都是以『防堵』的角度來避免錯誤,以這個角度來進行程式設計,能有效達到避免錯誤發生,但卻可能因為過多的資料檢核與提示,讓原本簡單的操作介面變得複雜,可能讓使用者花了30秒把資料輸入完成,但卻花了2分鐘依照檢核提示訊息把資料改好。良好的程式介面是能避免掉這些錯誤的,繁瑣的操作程序在設計時期加入同理心,以使用者角度去想,化繁為簡,減少錯誤,並能提昇系統滿意度;你能控制程式邏輯,卻無法控制使用者大腦,因此能用程式幫忙做到的,盡量減少人為介入判斷,能用電腦就少用頭腦,良好的程式介面設計可以引導使用者的操作流程,在使用者還沒開始輸入資料時就能以各式的顏色、區塊、分類、說明等等來告訴使用者那些資料是重要的,那些功能是你下一步要處理的,哪一些資料是你現在無法使用的,出發前,就把路徑規劃好,比起先出發再來問路要來的有效率,雖然一樣可以到達目的地,但所花費的時間與成本卻是不相同。

lcjan 發表在 痞客邦 PIXNET 留言(0) 人氣()