創新談-汪海

創新性應用:

,對應用系統架構的優化也是需要dba參與其中,舉個例子,很多時候我們可以在數據庫前面做一層cache服務器,保存已經被訪問過的頁面或者java對象,這個工作將由開發人員去完成,dba可以提供訪問最頻繁的語句,訪問最頻繁的對象,然後由開發人員通過程序實現cache這些東西,當應用請求進來,先去cache服務器訪問,如果需要訪問的頁面或對象在cache服務器上已經存在,那麼將不需要請求數據庫,這樣的話數據庫的壓力會減少非常大,由於cache服務器基本上是由pc sever cluster組成,橫向可擴展性比較強而且價格比較便宜,所以當企業發展到一定規模後可以考慮從應用層上添加cache層而不是急於去升級數據庫硬件,dba要有這個意識,要能挖掘一切能優化的地方,換個角度去想新方法,新思路,不僅僅侷限於數據庫本身的優化。

 

行業借鑑經驗:

主機方面的優化會從硬件選型開始,我們需要確定我們的系統目標容量是什麼,需要採購什麼硬件能夠支撐這個容量,要有可量化的指標,有了可量化的指標後我們可以通過測試得出什麼機器能滿足性能,最後要綜合成本考慮,選定一款能符合目標容量並且性價比最高的機器。由於硬件的升級換代非常迅速,一般2年時間就有新一代主機推出,所以在選擇機器的時候只選夠用的機器而不去追求一次採購到位,任何高端的機器2年過後必然被更高端的機器所代替。一般來說在企業發展的初期,採用LINUXpc server是最優化的方案,相比較windows系統,linux系統的長時間運行的穩定性更強,與unix系統相比,linux又體現了經濟性。在企業的業務迅速發展後,對系統可用性更高的情況下,我們需要考慮採用UNIX系統的服務器,採用各種高可用方案保證系統的穩定性,爲業務發展提供支撐。當系統搭建完畢,我們需要把注意力回到主機和操作系統上,對系統的運行狀態持續跟蹤,對系統的瓶頸進行優化。

最後說到流程優化,需要有一套完善的體系保證數據庫系統的穩定快速運行。從設備選型開始,需要組織一個選型團隊,把設備選型當作一個項目在做,需要有DBASA,測試工程師,開發人員很多人員組成一個項目團隊,需要有PM來負責監督整個項目。DBA負責數據的準備,測試系統的搭建,測試工程師負責編寫測試用例,開發人員負責整理搭建和配置application server,PM協調整個項目的資源和控制項目時間。測試完畢採購完成,DBA要做爲PM制定系統升級方案,也是要控制好項目的資源和時間安排,做好和各個相關部門的溝通。硬件上線後需要有測試流程保證程序員開發的應用沒有sql方面的問題,只有測試通過才能上線系統。應用發佈後DBA要收集有問題的sql,返回給程序員修改這些sql語句,同時針對這些sql對開發人員做階段性的sql知識培訓。DBA團隊內部也要建立起培訓體系,力求整個DBA TEAM能分享業務知識,提高全體DBA的技術水平。我們所做的這些事情目的都是爲了使數據庫系統能實現最優化,利用流程規範少犯錯,少走彎路,使用最少的資源獲得最大的效果。

 

應用難點技巧:

數據庫上的優化DBA首先要做的是找到一種階段化的優化手段,一般來說針對數據庫優化都會經過下列步驟

1.   設定優化目標

2.   記錄當前性能

3.   尋找當前瓶頸

4.   優化瓶頸所在

5.   實施優化策略

6.   測量並記錄優化後的性能

7.   重複步驟36直到達到優化目標爲止。

一般來說在企業裏面優化目標基本會跟數據庫的吞吐量,數據庫請求響應時間掛鉤。在確定優化目標後,我們可以去查看當前性能,查看數據庫性能監控報表,查看數據庫的等待事件,查看top n sql,聯合操作系統上的性能報表一起定位到瓶頸,然後對這些瓶頸做出相應的優化,再比較優化前後性能的差別,反覆這個過程,最終達到優化目標。因爲企業的應用系統可能天天在變化,dba必須每天都關注性能問題,優化是一個長期持續的過程,最終目標都是爲了發揮出系統的最大能量。

 

 

 

 

 

文章請同時提交信箱:[email protected]  [email protected]

 

用最少的成本獲得最大收益――論DBA在企業可持續發展中的價值

 

  在當今競爭激烈的市場環境下,成本控制毫無疑問是各個企業提升競爭力非常重要的一個部分,由於衆多競爭對手會提供同質化產品和服務,企業必須從控制內部成本做起,做爲企業內部開銷相對比較大的IT部門,應該首當其衝最大化得挖掘系統的潛力。DBA要引進新方法,新思路,擴展自己的視野,不僅僅侷限在數據庫維護本身。總的來說,DBA能爲這個目標做的事情基本上可以分爲系統優化,應用優化,流程優化三個方面。

 

 

首先談到系統優化,這是大部分dba都要接觸到的工作。企業定出一個商業目標,IT主管需要把這個商業目標轉換成系統的承載能力,要保證系統不會成爲拖累。這個目標到了DBA這裏,DBA需要把它分成主機與操作系統,存儲,數據庫3個部分。

 

主機方面的優化會從硬件選型開始,我們需要確定我們的系統目標容量是什麼,需要採購什麼硬件能夠支撐這個容量,要有可量化的指標,有了可量化的指標後我們可以通過測試得出什麼機器能滿足性能,最後要綜合成本考慮,選定一款能符合目標容量並且性價比最高的機器。由於硬件的升級換代非常迅速,一般2年時間就有新一代主機推出,所以在選擇機器的時候只選夠用的機器而不去追求一次採購到位,任何高端的機器2年過後必然被更高端的機器所代替。一般來說在企業發展的初期,採用LINUXpc server是最優化的方案,相比較windows系統,linux系統的長時間運行的穩定性更強,與unix系統相比,linux又體現了經濟性。在企業的業務迅速發展後,對系統可用性更高的情況下,我們需要考慮採用UNIX系統的服務器,採用各種高可用方案保證系統的穩定性,爲業務發展提供支撐。當系統搭建完畢,我們需要把注意力回到主機和操作系統上,對系統的運行狀態持續跟蹤,對系統的瓶頸進行優化。

存儲方面的優化需要DBA對各種存儲體系非常瞭解,對DAS,NAS,SAN的優缺點要了然於胸。要爲不同的應用選取不同的存儲方案,舉個例子,如果一套系統的對性能的要求不是第一位,但是非常注重經濟性,那麼DAS可能會是一個好的選擇。如果一套系統要求有快速可以移植能力,那麼NAS可能將會是首選。如果一套系統追求的是性能,那麼SAN可以做爲它的解決方案。另外當今各個存儲廠商也都提出了自己的數據生命週期管理實現方案,大家的目的也都是爲了讓用戶把最重要的數據放在覈心存儲上,次要的系統和歷史數據可以分佈在成本比較低的二級或三級存儲上,儘可能爲用戶節省成本。另外對於存儲方面細節的優化我們可以集中到raid的劃分,storage read/write cache劃分,存儲的iopsthroughputcpu utilization,response time的監控。DBA首先要做到能做正確的事(爲不同的應用選對合適的系統),其次要能做到正確的做事(關注技術細節,關注性能,把知識合理得運用到優化中去)。

數據庫上的優化DBA首先要做的是找到一種階段化的優化手段,一般來說針對數據庫優化都會經過下列步驟

8.  設定優化目標

9.  記錄當前性能

10.       尋找當前瓶頸

11.       優化瓶頸所在

12.       實施優化策略

13.       測量並記錄優化後的性能

14.       重複步驟36直到達到優化目標爲止。

一般來說在企業裏面優化目標基本會跟數據庫的吞吐量,數據庫請求響應時間掛鉤。在確定優化目標後,我們可以去查看當前性能,查看數據庫性能監控報表,查看數據庫的等待事件,查看top n sql,聯合操作系統上的性能報表一起定位到瓶頸,然後對這些瓶頸做出相應的優化,再比較優化前後性能的差別,反覆這個過程,最終達到優化目標。因爲企業的應用系統可能天天在變化,dba必須每天都關注性能問題,優化是一個長期持續的過程

  ,最終目標都是爲了發揮出系統的最大能量。

 

接下來說到應用優化,其實很多時候當系統負載比較高的時候都是因爲應用裏面有性能很差的sql語句引起的,控制sql語句的質量是dba的頭等大事。我自己也曾經幫別人優化過很多系統,通常出現問題的時候都是由於sql語句寫的不好,該建立的索引沒有建,不需要關聯的語句去關聯,高併發的全表掃描導致系統負載相當高,這時候一些公司的就會考慮去升級硬件,升級存儲,升級主機,通常會選用高出實際容量很多的硬件,能用pc server的去選用小型機,能用小型機的選用rac,實際上如果有一個比較專業的dba,那麼經過優化後的系統完全沒必要升級,這其中的IT投入都可以省掉。對於自己開發應用程序的公司,Dba要主動建立sql培訓體系,定期給開發人員講解sql相關知識,最好是把已經出現問題的sql做爲案例分析進行講解,這樣效果會比較明顯。這樣做的目的是因爲sql語句是程序員寫在應用裏面的,很多時候dba等到應用上線後才發現性能有問題的語句,這個時候通常已經給業務系統帶來或大或小的影響了,dba需要把問題消滅在開始階段。當然只有培訓是不夠的,dba需要藉助測試部門的力量把有問題的語句在測試階段儘量都發現,這樣就必定要搭建一套完整的開發數據庫和測試數據庫,開發庫和測試庫與產品庫的表結構和對象要保持一致,以oracle爲例,dba可以自己利用pl/sql腳本對比兩個庫的數據結構並自動同步,還可以做到從產品庫定時同步數據到開發測試庫,儘量保證開發測試庫數據的有效性,不會因爲開發測試庫數據的確失導致測試中不能發現有問題的語句。另外,對應用系統架構的優化也是需要dba參與其中,舉個例子,很多時候我們可以在數據庫前面做一層cache服務器,保存已經被訪問過的頁面或者java對象,這個工作將由開發人員去完成,dba可以提供訪問最頻繁的語句,訪問最頻繁的對象,然後由開發人員通過程序實現cache這些東西,當應用請求進來,先去cache服務器訪問,如果需要訪問的頁面或對象在cache服務器上已經存在,那麼將不需要請求數據庫,這樣的話數據庫的壓力會減少非常大,由於cache服務器基本上是由pc sever cluster組成,橫向可擴展性比較強而且價格比較便宜,所以當企業發展到一定規模後可以考慮從應用層上添加cache層而不是急於去升級數據庫硬件,dba要有這個意識,要能挖掘一切能優化的地方,換個角度去想新方法,新思路,不僅僅侷限於數據庫本身的優化。

 

最後說到流程優化,需要有一套完善的體系保證數據庫系統的穩定快速運行。從設備選型開始,需要組織一個選型團隊,把設備選型當作一個項目在做,需要有DBASA,測試工程師,開發人員很多人員組成一個項目團隊,需要有PM來負責監督整個項目。DBA負責數據的準備,測試系統的搭建,測試工程師負責編寫測試用例,開發人員負責整理搭建和配置application server,PM協調整個項目的資源和控制項目時間。測試完畢採購完成,DBA要做爲PM制定系統升級方案,也是要控制好項目的資源和時間安排,做好和各個相關部門的溝通。硬件上線後需要有測試流程保證程序員開發的應用沒有sql方面的問題,只有測試通過才能上線系統。應用發佈後DBA要收集有問題的sql,返回給程序員修改這些sql語句,同時針對這些sql對開發人員做階段性的sql知識培訓。DBA團隊內部也要建立起培訓體系,力求整個DBA TEAM能分享業務知識,提高全體DBA的技術水平。我們所做的這些事情目的都是爲了使數據庫系統能實現最優化,利用流程規範少犯錯,少走彎路,使用最少的資源獲得最大的效果。

DBA在現代的企業中不僅僅只是單純的數據庫維護人員,dba要提供高附加值的服務,要利用自己的知識和技能不停的優化系統,減少IT支出,提高企業競爭力。要做一個優秀的DBA,可持續發展的數據庫從業人員,不僅僅要掌握上面說到的掌握操作系統,存儲,數據庫,良好的溝通技能,項目管理的能力,也要對業界的最新技術有敏銳的嗅覺,具備全局的IT構架規劃能力,永遠都在不斷的學習中成長。

 

 

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章