创新谈-汪海
| 創(chuàng)新性應(yīng)用: ,對應(yīng)用系統(tǒng)架構(gòu)的優(yōu)化也是需要dba參與其中,舉個例子,很多時候我們可以在數(shù)據(jù)庫前面做一層cache服務(wù)器,保存已經(jīng)被訪問過的頁面或者java對象,這個工作將由開發(fā)人員去完成,dba可以提供訪問最頻繁的語句,訪問最頻繁的對象,然后由開發(fā)人員通過程序?qū)崿F(xiàn)cache這些東西,當(dāng)應(yīng)用請求進(jìn)來,先去cache服務(wù)器訪問,如果需要訪問的頁面或?qū)ο笤?/span>cache服務(wù)器上已經(jīng)存在,那么將不需要請求數(shù)據(jù)庫,這樣的話數(shù)據(jù)庫的壓力會減少非常大,由于cache服務(wù)器基本上是由pc sever cluster組成,橫向可擴(kuò)展性比較強(qiáng)而且價格比較便宜,所以當(dāng)企業(yè)發(fā)展到一定規(guī)模后可以考慮從應(yīng)用層上添加cache層而不是急于去升級數(shù)據(jù)庫硬件,dba要有這個意識,要能挖掘一切能優(yōu)化的地方,換個角度去想新方法,新思路,不僅僅局限于數(shù)據(jù)庫本身的優(yōu)化。 ? 行業(yè)借鑒經(jīng)驗: 主機(jī)方面的優(yōu)化會從硬件選型開始,我們需要確定我們的系統(tǒng)目標(biāo)容量是什么,需要采購什么硬件能夠支撐這個容量,要有可量化的指標(biāo),有了可量化的指標(biāo)后我們可以通過測試得出什么機(jī)器能滿足性能,最后要綜合成本考慮,選定一款能符合目標(biāo)容量并且性價比最高的機(jī)器。由于硬件的升級換代非常迅速,一般2年時間就有新一代主機(jī)推出,所以在選擇機(jī)器的時候只選夠用的機(jī)器而不去追求一次采購到位,任何高端的機(jī)器2年過后必然被更高端的機(jī)器所代替。一般來說在企業(yè)發(fā)展的初期,采用LINUX的pc server是最優(yōu)化的方案,相比較windows系統(tǒng),linux系統(tǒng)的長時間運行的穩(wěn)定性更強(qiáng),與unix系統(tǒng)相比,linux又體現(xiàn)了經(jīng)濟(jì)性。在企業(yè)的業(yè)務(wù)迅速發(fā)展后,對系統(tǒng)可用性更高的情況下,我們需要考慮采用UNIX系統(tǒng)的服務(wù)器,采用各種高可用方案保證系統(tǒng)的穩(wěn)定性,為業(yè)務(wù)發(fā)展提供支撐。當(dāng)系統(tǒng)搭建完畢,我們需要把注意力回到主機(jī)和操作系統(tǒng)上,對系統(tǒng)的運行狀態(tài)持續(xù)跟蹤,對系統(tǒng)的瓶頸進(jìn)行優(yōu)化。 最后說到流程優(yōu)化,需要有一套完善的體系保證數(shù)據(jù)庫系統(tǒng)的穩(wěn)定快速運行。從設(shè)備選型開始,需要組織一個選型團(tuán)隊,把設(shè)備選型當(dāng)作一個項目在做,需要有DBA(SA),測試工程師,開發(fā)人員很多人員組成一個項目團(tuán)隊,需要有PM來負(fù)責(zé)監(jiān)督整個項目。DBA負(fù)責(zé)數(shù)據(jù)的準(zhǔn)備,測試系統(tǒng)的搭建,測試工程師負(fù)責(zé)編寫測試用例,開發(fā)人員負(fù)責(zé)整理搭建和配置application server,PM協(xié)調(diào)整個項目的資源和控制項目時間。測試完畢采購?fù)瓿?#xff0c;DBA要做為PM制定系統(tǒng)升級方案,也是要控制好項目的資源和時間安排,做好和各個相關(guān)部門的溝通。硬件上線后需要有測試流程保證程序員開發(fā)的應(yīng)用沒有sql方面的問題,只有測試通過才能上線系統(tǒng)。應(yīng)用發(fā)布后DBA要收集有問題的sql,返回給程序員修改這些sql語句,同時針對這些sql對開發(fā)人員做階段性的sql知識培訓(xùn)。DBA團(tuán)隊內(nèi)部也要建立起培訓(xùn)體系,力求整個DBA TEAM能分享業(yè)務(wù)知識,提高全體DBA的技術(shù)水平。我們所做的這些事情目的都是為了使數(shù)據(jù)庫系統(tǒng)能實現(xiàn)最優(yōu)化,利用流程規(guī)范少犯錯,少走彎路,使用最少的資源獲得最大的效果。 ? 應(yīng)用難點技巧: 數(shù)據(jù)庫上的優(yōu)化DBA首先要做的是找到一種階段化的優(yōu)化手段,一般來說針對數(shù)據(jù)庫優(yōu)化都會經(jīng)過下列步驟 1.?? 設(shè)定優(yōu)化目標(biāo) 2.?? 記錄當(dāng)前性能 3.?? 尋找當(dāng)前瓶頸 4.?? 優(yōu)化瓶頸所在 5.?? 實施優(yōu)化策略 6.?? 測量并記錄優(yōu)化后的性能 7.?? 重復(fù)步驟3-6直到達(dá)到優(yōu)化目標(biāo)為止。 一般來說在企業(yè)里面優(yōu)化目標(biāo)基本會跟數(shù)據(jù)庫的吞吐量,數(shù)據(jù)庫請求響應(yīng)時間掛鉤。在確定優(yōu)化目標(biāo)后,我們可以去查看當(dāng)前性能,查看數(shù)據(jù)庫性能監(jiān)控報表,查看數(shù)據(jù)庫的等待事件,查看top n sql,聯(lián)合操作系統(tǒng)上的性能報表一起定位到瓶頸,然后對這些瓶頸做出相應(yīng)的優(yōu)化,再比較優(yōu)化前后性能的差別,反復(fù)這個過程,最終達(dá)到優(yōu)化目標(biāo)。因為企業(yè)的應(yīng)用系統(tǒng)可能天天在變化,dba必須每天都關(guān)注性能問題,優(yōu)化是一個長期持續(xù)的過程,最終目標(biāo)都是為了發(fā)揮出系統(tǒng)的最大能量。 ? ? ? ? ? |
文章請同時提交信箱:bestdba@ciw.com.cn? mulibox@yahoo.com.cn
?
用最少的成本獲得最大收益――論DBA在企業(yè)可持續(xù)發(fā)展中的價值
?
? 在當(dāng)今競爭激烈的市場環(huán)境下,成本控制毫無疑問是各個企業(yè)提升競爭力非常重要的一個部分,由于眾多競爭對手會提供同質(zhì)化產(chǎn)品和服務(wù),企業(yè)必須從控制內(nèi)部成本做起,做為企業(yè)內(nèi)部開銷相對比較大的IT部門,應(yīng)該首當(dāng)其沖最大化得挖掘系統(tǒng)的潛力。DBA要引進(jìn)新方法,新思路,擴(kuò)展自己的視野,不僅僅局限在數(shù)據(jù)庫維護(hù)本身。總的來說,DBA能為這個目標(biāo)做的事情基本上可以分為系統(tǒng)優(yōu)化,應(yīng)用優(yōu)化,流程優(yōu)化三個方面。
?
?
首先談到系統(tǒng)優(yōu)化,這是大部分dba都要接觸到的工作。企業(yè)定出一個商業(yè)目標(biāo),IT主管需要把這個商業(yè)目標(biāo)轉(zhuǎn)換成系統(tǒng)的承載能力,要保證系統(tǒng)不會成為拖累。這個目標(biāo)到了DBA這里,DBA需要把它分成主機(jī)與操作系統(tǒng),存儲,數(shù)據(jù)庫3個部分。
?
主機(jī)方面的優(yōu)化會從硬件選型開始,我們需要確定我們的系統(tǒng)目標(biāo)容量是什么,需要采購什么硬件能夠支撐這個容量,要有可量化的指標(biāo),有了可量化的指標(biāo)后我們可以通過測試得出什么機(jī)器能滿足性能,最后要綜合成本考慮,選定一款能符合目標(biāo)容量并且性價比最高的機(jī)器。由于硬件的升級換代非常迅速,一般2年時間就有新一代主機(jī)推出,所以在選擇機(jī)器的時候只選夠用的機(jī)器而不去追求一次采購到位,任何高端的機(jī)器2年過后必然被更高端的機(jī)器所代替。一般來說在企業(yè)發(fā)展的初期,采用LINUX的pc server是最優(yōu)化的方案,相比較windows系統(tǒng),linux系統(tǒng)的長時間運行的穩(wěn)定性更強(qiáng),與unix系統(tǒng)相比,linux又體現(xiàn)了經(jīng)濟(jì)性。在企業(yè)的業(yè)務(wù)迅速發(fā)展后,對系統(tǒng)可用性更高的情況下,我們需要考慮采用UNIX系統(tǒng)的服務(wù)器,采用各種高可用方案保證系統(tǒng)的穩(wěn)定性,為業(yè)務(wù)發(fā)展提供支撐。當(dāng)系統(tǒng)搭建完畢,我們需要把注意力回到主機(jī)和操作系統(tǒng)上,對系統(tǒng)的運行狀態(tài)持續(xù)跟蹤,對系統(tǒng)的瓶頸進(jìn)行優(yōu)化。
存儲方面的優(yōu)化需要DBA對各種存儲體系非常了解,對DAS,NAS,SAN的優(yōu)缺點要了然于胸。要為不同的應(yīng)用選取不同的存儲方案,舉個例子,如果一套系統(tǒng)的對性能的要求不是第一位,但是非常注重經(jīng)濟(jì)性,那么DAS可能會是一個好的選擇。如果一套系統(tǒng)要求有快速可以移植能力,那么NAS可能將會是首選。如果一套系統(tǒng)追求的是性能,那么SAN可以做為它的解決方案。另外當(dāng)今各個存儲廠商也都提出了自己的數(shù)據(jù)生命周期管理實現(xiàn)方案,大家的目的也都是為了讓用戶把最重要的數(shù)據(jù)放在核心存儲上,次要的系統(tǒng)和歷史數(shù)據(jù)可以分布在成本比較低的二級或三級存儲上,盡可能為用戶節(jié)省成本。另外對于存儲方面細(xì)節(jié)的優(yōu)化我們可以集中到raid的劃分,storage read/write cache劃分,存儲的iops,throughput和cpu utilization,response time的監(jiān)控。DBA首先要做到能做正確的事(為不同的應(yīng)用選對合適的系統(tǒng)),其次要能做到正確的做事(關(guān)注技術(shù)細(xì)節(jié),關(guān)注性能,把知識合理得運用到優(yōu)化中去)。
數(shù)據(jù)庫上的優(yōu)化DBA首先要做的是找到一種階段化的優(yōu)化手段,一般來說針對數(shù)據(jù)庫優(yōu)化都會經(jīng)過下列步驟
8.? 設(shè)定優(yōu)化目標(biāo)
9.? 記錄當(dāng)前性能
10.?????? 尋找當(dāng)前瓶頸
11.?????? 優(yōu)化瓶頸所在
12.?????? 實施優(yōu)化策略
13.?????? 測量并記錄優(yōu)化后的性能
14.?????? 重復(fù)步驟3-6直到達(dá)到優(yōu)化目標(biāo)為止。
一般來說在企業(yè)里面優(yōu)化目標(biāo)基本會跟數(shù)據(jù)庫的吞吐量,數(shù)據(jù)庫請求響應(yīng)時間掛鉤。在確定優(yōu)化目標(biāo)后,我們可以去查看當(dāng)前性能,查看數(shù)據(jù)庫性能監(jiān)控報表,查看數(shù)據(jù)庫的等待事件,查看top n sql,聯(lián)合操作系統(tǒng)上的性能報表一起定位到瓶頸,然后對這些瓶頸做出相應(yīng)的優(yōu)化,再比較優(yōu)化前后性能的差別,反復(fù)這個過程,最終達(dá)到優(yōu)化目標(biāo)。因為企業(yè)的應(yīng)用系統(tǒng)可能天天在變化,dba必須每天都關(guān)注性能問題,優(yōu)化是一個長期持續(xù)的過程
? ,最終目標(biāo)都是為了發(fā)揮出系統(tǒng)的最大能量。
?
接下來說到應(yīng)用優(yōu)化,其實很多時候當(dāng)系統(tǒng)負(fù)載比較高的時候都是因為應(yīng)用里面有性能很差的sql語句引起的,控制sql語句的質(zhì)量是dba的頭等大事。我自己也曾經(jīng)幫別人優(yōu)化過很多系統(tǒng),通常出現(xiàn)問題的時候都是由于sql語句寫的不好,該建立的索引沒有建,不需要關(guān)聯(lián)的語句去關(guān)聯(lián),高并發(fā)的全表掃描導(dǎo)致系統(tǒng)負(fù)載相當(dāng)高,這時候一些公司的就會考慮去升級硬件,升級存儲,升級主機(jī),通常會選用高出實際容量很多的硬件,能用pc server的去選用小型機(jī),能用小型機(jī)的選用rac,實際上如果有一個比較專業(yè)的dba,那么經(jīng)過優(yōu)化后的系統(tǒng)完全沒必要升級,這其中的IT投入都可以省掉。對于自己開發(fā)應(yīng)用程序的公司,Dba要主動建立sql培訓(xùn)體系,定期給開發(fā)人員講解sql相關(guān)知識,最好是把已經(jīng)出現(xiàn)問題的sql做為案例分析進(jìn)行講解,這樣效果會比較明顯。這樣做的目的是因為sql語句是程序員寫在應(yīng)用里面的,很多時候dba等到應(yīng)用上線后才發(fā)現(xiàn)性能有問題的語句,這個時候通常已經(jīng)給業(yè)務(wù)系統(tǒng)帶來或大或小的影響了,dba需要把問題消滅在開始階段。當(dāng)然只有培訓(xùn)是不夠的,dba需要借助測試部門的力量把有問題的語句在測試階段盡量都發(fā)現(xiàn),這樣就必定要搭建一套完整的開發(fā)數(shù)據(jù)庫和測試數(shù)據(jù)庫,開發(fā)庫和測試庫與產(chǎn)品庫的表結(jié)構(gòu)和對象要保持一致,以oracle為例,dba可以自己利用pl/sql腳本對比兩個庫的數(shù)據(jù)結(jié)構(gòu)并自動同步,還可以做到從產(chǎn)品庫定時同步數(shù)據(jù)到開發(fā)測試庫,盡量保證開發(fā)測試庫數(shù)據(jù)的有效性,不會因為開發(fā)測試庫數(shù)據(jù)的確失導(dǎo)致測試中不能發(fā)現(xiàn)有問題的語句。另外,對應(yīng)用系統(tǒng)架構(gòu)的優(yōu)化也是需要dba參與其中,舉個例子,很多時候我們可以在數(shù)據(jù)庫前面做一層cache服務(wù)器,保存已經(jīng)被訪問過的頁面或者java對象,這個工作將由開發(fā)人員去完成,dba可以提供訪問最頻繁的語句,訪問最頻繁的對象,然后由開發(fā)人員通過程序?qū)崿F(xiàn)cache這些東西,當(dāng)應(yīng)用請求進(jìn)來,先去cache服務(wù)器訪問,如果需要訪問的頁面或?qū)ο笤?/span>cache服務(wù)器上已經(jīng)存在,那么將不需要請求數(shù)據(jù)庫,這樣的話數(shù)據(jù)庫的壓力會減少非常大,由于cache服務(wù)器基本上是由pc sever cluster組成,橫向可擴(kuò)展性比較強(qiáng)而且價格比較便宜,所以當(dāng)企業(yè)發(fā)展到一定規(guī)模后可以考慮從應(yīng)用層上添加cache層而不是急于去升級數(shù)據(jù)庫硬件,dba要有這個意識,要能挖掘一切能優(yōu)化的地方,換個角度去想新方法,新思路,不僅僅局限于數(shù)據(jù)庫本身的優(yōu)化。
?
最后說到流程優(yōu)化,需要有一套完善的體系保證數(shù)據(jù)庫系統(tǒng)的穩(wěn)定快速運行。從設(shè)備選型開始,需要組織一個選型團(tuán)隊,把設(shè)備選型當(dāng)作一個項目在做,需要有DBA(SA),測試工程師,開發(fā)人員很多人員組成一個項目團(tuán)隊,需要有PM來負(fù)責(zé)監(jiān)督整個項目。DBA負(fù)責(zé)數(shù)據(jù)的準(zhǔn)備,測試系統(tǒng)的搭建,測試工程師負(fù)責(zé)編寫測試用例,開發(fā)人員負(fù)責(zé)整理搭建和配置application server,PM協(xié)調(diào)整個項目的資源和控制項目時間。測試完畢采購?fù)瓿?#xff0c;DBA要做為PM制定系統(tǒng)升級方案,也是要控制好項目的資源和時間安排,做好和各個相關(guān)部門的溝通。硬件上線后需要有測試流程保證程序員開發(fā)的應(yīng)用沒有sql方面的問題,只有測試通過才能上線系統(tǒng)。應(yīng)用發(fā)布后DBA要收集有問題的sql,返回給程序員修改這些sql語句,同時針對這些sql對開發(fā)人員做階段性的sql知識培訓(xùn)。DBA團(tuán)隊內(nèi)部也要建立起培訓(xùn)體系,力求整個DBA TEAM能分享業(yè)務(wù)知識,提高全體DBA的技術(shù)水平。我們所做的這些事情目的都是為了使數(shù)據(jù)庫系統(tǒng)能實現(xiàn)最優(yōu)化,利用流程規(guī)范少犯錯,少走彎路,使用最少的資源獲得最大的效果。
DBA在現(xiàn)代的企業(yè)中不僅僅只是單純的數(shù)據(jù)庫維護(hù)人員,dba要提供高附加值的服務(wù),要利用自己的知識和技能不停的優(yōu)化系統(tǒng),減少IT支出,提高企業(yè)競爭力。要做一個優(yōu)秀的DBA,可持續(xù)發(fā)展的數(shù)據(jù)庫從業(yè)人員,不僅僅要掌握上面說到的掌握操作系統(tǒng),存儲,數(shù)據(jù)庫,良好的溝通技能,項目管理的能力,也要對業(yè)界的最新技術(shù)有敏銳的嗅覺,具備全局的IT構(gòu)架規(guī)劃能力,永遠(yuǎn)都在不斷的學(xué)習(xí)中成長。
?
?
總結(jié)
- 上一篇: Argo CD系列视频图文版之安装 ar
- 下一篇: Linux管理